Java Spring mvc RESTFul API请求模式
我正在使用Spring MVC构建RESTful API,如:Java Spring mvc RESTFul API请求模式,java,api,spring-mvc,restful-url,Java,Api,Spring Mvc,Restful Url,我正在使用Spring MVC构建RESTful API,如: @RequestMapping(value ="/session={sessionID}&p1={p1}&p2={p2}") public @ResponseBody Object getData1(@PathVariable String sessionID, @PathVariable String p1, @PathVariable String p2) { return "Get D
@RequestMapping(value ="/session={sessionID}&p1={p1}&p2={p2}")
public @ResponseBody
Object getData1(@PathVariable String sessionID,
@PathVariable String p1, @PathVariable String p2) {
return "Get Data";
}
@RequestMapping(value ="/session={sessionID}&p1={p1}&p2={p2}&p3={p3}")
public @ResponseBody
Object getData2(@PathVariable String sessionID,
@PathVariable String p1, @PathVariable String p2, @PathVariable String p3) {
return "Get next Data";
}
但是,当我将url键入/session=1&p1=a&p2=b和/session=1/&p1=a&p2=b&p3=c时,它们总是返回相同的字符串“Get Data”。在调试时,我发现两个请求都指向相同的第一个方法,并且p2=“b&p3=c”。
我真的很困惑:(
我需要你的帮助。
谢谢
-C您可以使用不同的模式来解决不受支持的“重载”,如
"/session={sessionID}/data1/&p1={p1}&p2={p2}"
及
你能告诉我更多的细节为什么我不能这样做吗?它需要第一个匹配。没有任何东西说'b&p3=c'对于p2不是一个完全合法的值,所以它不会一直尝试看是否有更好的匹配。顺便说一句,如果你提供自己的org.springframework.util.PathMatcheryURL的实现,它是可配置的r列表中没有“?”分隔符…这似乎很奇怪。为什么不使用常规的REST URL,如
/session/{sessionId}
,然后通过@RequestParam()映射参数
?例如,URL应该是/session/1?p1=a&p2=b
。请参阅通过@PathVariableyou获取参数的示例。您说得很对。我正在使用@RequestParam,它现在对我来说运行良好。谢谢。
"/session={sessionID}/data2&p1={p1}&p2={p2}}&p3={p3}"