在我读过的所有关于Spring 3对Spring MVC的RESTful添加的教程和文章中,我只见过一种通过@PathVariable
传递查询数据的方法:
@RequestMapping(value="/shops/{name}", method=RequestMethod.GET)
public @ResponseBody Shop getShopInJSON(@PathVariable String name) {
...
}
其将响应于可以评估为http://www.example.com/myservlet/shops/thebestshoparound
的类似http://www.example.com/myservlet/shops/{name}
的东西。
我的问题是:是否可以设置一个RESTful接口,它接受基于经典查询字符串的请求,例如http://www.example.com/myservlet/shops?name=thebestshoparound
,而不是PathVariables
?
这似乎是一个非常简单的问题,但我在网上找不到。
是的,使用注释@RequestParam
,下面是一个示例:
public @ResponseBody Shop getShopInJSON(@PathVariable String name, @RequestParam(value="query", required=false) String query) {
// do stuff
}