我使用泽西版本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