[英]How to define priorities for request mappings in Spring MVC?
使用SpringMVC,我有一個捕獲所有REST請求的方法:
@RequestMapping(value = "/**")
public Object catchAll(@RequestBody(required = false) Object body, HttpMethod method, HttpServletRequest request, HttpServletResponse response) {
// ...
}
現在,我想用以下端點捕獲一些請求:
@RequestMapping(value = "/test", method = RequestMethod.POST)
public Object post(@RequestBody Object body, HttpMethod method, HttpServletRequest request, HttpServletResponse response) {
// ...
}
現在,當我打電話給:
/測試
從不調用第二種方法。
要使我的第二個方法始終代替第一個方法,該怎么辦?
首先,正如Asura所指出的,不要實現'catchAll'方法。 話雖如此,Spring MVC允許您在URL中使用正則表達式。
在此處閱讀在Spring URL中使用正則表達式的文檔。
在您的情況下,請在第一個URL中使用否定前瞻,以刪除以/test
開頭的內容。 這樣,您的/**
控制器將捕獲除以/test
開頭的請求之外的所有請求,您可以使用其他控制器來捕獲這些請求。
在第一個網址中使用否定的超前查詢:
@RequestMapping(value = "/^(?!test)")
public Object catchAll(@RequestBody(required = false) Object body, HttpMethod method, HttpServletRequest request, HttpServletResponse response) {
// ...
}
現在,這應該捕獲/test
請求:
@RequestMapping(value = "/test", method = RequestMethod.POST)
public Object post(@RequestBody Object body, HttpMethod method, HttpServletRequest request, HttpServletResponse response) {
// ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.