我使用澤西版本1.17.1 + tomcat 7.0.39 + Spring MVC 3.2.1。REST Jersey GET PUT衝突
問題是,我無法弄清楚爲什麼當我擴展GET處理程序的@Path時,我的PUT處理程序停止工作?
在我的Spring MVC控制器下面的配置/匹配按預期工作:
@GET
@Path("/{id}") // <--- WORKS!
[...]
@PUT
@Path("/{id}") // <--- WORKS!
[...]
但每當我爲了能夠 延長GET處理程序的匹配處理不僅
/anyId
請求,但也請求的形式
/anyId/
/anyId/anyfile.ext
再沒有碰過的PUT匹配停止工作:
@GET
@Path("/{id:.*[^/]}{fileName:.*}") // <--- WORKS!
[...]
@PUT
@Path("/{id}") // <--- Not working any longer:
// "405 Method Not Allowed"
[...]
改變GET路徑匹配到上述PUT請求後得到「405不允許的方法」的狀態代碼。
當我像第一種情況那樣簡化GET路徑時,PUT處理程序再次開始工作。
這是澤西島的問題還是什麼?
我很確定這裏的控制器並不重要。我故意跳過了它們。我已經使用遠程調試進行了驗證。當我使用更簡單的映射時,兩種方法(@ Path's)均可正常工作 - 兩個控制器均按預期方式輸入。但是,用正則表達式擴展GET @Path就足夠了,然後** PUT **處理程序停止工作,並且服務器返回「方法不允許」(擴展的GET匹配工作正常)。 – gvlax