Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring mvc RESTFul API请求模式_Java_Api_Spring Mvc_Restful Url - Fatal编程技术网

Java 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

我正在使用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 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}"