【发布时间】:2012-03-20 22:13:35
【问题描述】:
我正在使用 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 时,它们总是返回相同的字符串“获取数据”。在调试时,我发现两个请求都使用了相同的第一种方法和 p2="b&p3=c"。 这真的让我很困惑:(
需要你的帮助。 谢谢。 -C
【问题讨论】:
-
您的网址看起来像参数列表,但缺少“?”分隔符......似乎是一件奇怪的事情。为什么不使用像
/session/{sessionId}这样的常规REST URL,然后通过@RequestParam()映射参数?例如。网址为/session/1?p1=a&p2=b。 -
参见stackoverflow.com/q/5000876/249327,例如通过@PathVariable 获取参数
-
你说的很对。我正在使用@RequestParam,它现在对我来说效果很好。谢谢。
标签: java api spring-mvc restful-url