ইউআরএলগুলি কীভাবে ম্যাপ করা হয় তা সম্ভবত আপনার জানতে হবে, যেহেতু আমি 404
কয়েক ঘন্টা ধরে ভুগছি। হ্যান্ডলারের হ্যান্ডলিং অনুরোধ দুটি ধরণের আছে। BeanNameUrlHandlerMapping
এবং SimpleUrlHandlerMapping
। যখন আমরা একটি সংজ্ঞায়িত করি servlet-mapping
, আমরা ব্যবহার করছি SimpleUrlHandlerMapping
। একটি জিনিস আমাদের জানা দরকার যে এই দুটি হ্যান্ডলারের একটি সাধারণ সম্পত্তি ভাগ করে নেওয়া হয় alwaysUseFullPath
যার নাম ডিফল্ট false
।
false
এখানে অর্থ স্প্রিং একটি নিয়ামককে ইউআরএল ম্যাপ করার জন্য পুরো পথ ব্যবহার করবে না। এর মানে কী? এর অর্থ যখন আপনি একটি সংজ্ঞা দেন servlet-mapping
:
<servlet-mapping>
<servlet-name>viewServlet</servlet-name>
<url-pattern>/perfix/*</url-pattern>
</servlet-mapping>
*
নিয়ামকটি সন্ধান করতে হ্যান্ডলার আসলে অংশটি ব্যবহার করবে । উদাহরণস্বরূপ, 404
আপনি যখন এটি ব্যবহারের অনুরোধ করছেন তখন নীচের নিয়ামক একটি ত্রুটির মুখোমুখি হবে/perfix/api/feature/doSomething
@Controller()
@RequestMapping("/perfix/api/feature")
public class MyController {
@RequestMapping(value = "/doSomething", method = RequestMethod.GET)
@ResponseBody
public String doSomething(HttpServletRequest request) {
....
}
}
এটি একটি নিখুঁত ম্যাচ, তাই না? তবে কেন 404
। পূর্বে উল্লিখিত হিসাবে, এর ডিফল্ট মানটি alwaysUseFullPath
মিথ্যা, যার অর্থ আপনার অনুরোধে কেবলমাত্র /api/feature/doSomething
একটি সংশ্লিষ্ট নিয়ামক সন্ধান করতে ব্যবহৃত হয়, তবে কোনও নিয়ামকই সেই পথটির বিষয়ে চিন্তা করেন না। আপনার নিজের ইউআরএলটি মাইকন্ট্রোলার বেস থেকে পরিবর্তন করতে হবে /perfix/perfix/api/feature/doSomething
বা সরিয়ে ফেলতে হবে ।perfix
@RequestingMapping