ইউআরএলগুলি কীভাবে ম্যাপ করা হয় তা সম্ভবত আপনার জানতে হবে, যেহেতু আমি 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