Java 具有多个参数的restfulspring服务
我正在构建一个restful服务,它需要接受任意数量的参数,而不是下面示例中的参数 假设以下服务程序Java 具有多个参数的restfulspring服务,java,spring,url,rest,resttemplate,Java,Spring,Url,Rest,Resttemplate,我正在构建一个restful服务,它需要接受任意数量的参数,而不是下面示例中的参数 假设以下服务程序 @RequestMapping("/start/id/{id}", RequestMethod.GET) public void startService(@PathVariable String id) {...} 有一个基于 问题:但考虑到可能有数千个id,我必须使用什么restful方法在一个请求中发送所有参数?我已经看到了这些建议 添加请求正文以获取请求-似乎不可能使用 在id中使用
@RequestMapping("/start/id/{id}", RequestMethod.GET)
public void startService(@PathVariable String id) {...}
有一个基于
问题:但考虑到可能有数千个id
,我必须使用什么restful方法在一个请求中发送所有参数?我已经看到了这些建议
- 添加请求正文以获取请求-似乎不可能使用
- 在id中使用分隔符(例如,
)-看起来像是黑客攻击id1 | id2 | | | | idn
- 将参数放在第一位,然后发出一个GET来引用ID-双重请求,似乎不直观
- 添加多个URL参数(
)?id=foo&id=bar&……&id=foobar
我知道以前也有人问过类似的问题(,),但我发现很难找到一个令人满意的答案,或者至少是一个基于事实的答案 您可以对所有ID使用查询参数:
/search?ids=1,2,3,4,5,6,7
然后用逗号标记并进行搜索。请记住,如果您将其作为GET查询字符串参数发出,您将受到最大URL长度的限制。我认为RESTful设计的任何部分都没有说明您的URL结构应该能够解析整个集合。您的第一个(请求参数)和第三个(url参数)建议可能是最好的 我推荐第一种。我确信它在resttemplate中是允许的。查看您提供的文档,只需实现post方法之一。它们中的每一个都将请求作为参数。在这里,我确信有一种
getRequestParameters()
方法的实现,您可以使用它从包含ID的请求体解析json/xml
或者,更好的是,所有这些id是如何关联的?它们是否都有一个共同的父资源?如果是这样的话,那么你可以(也可能应该)做一些像
/commonparent/{parentId}
然后在您的请求处理程序中,查询所有ID,并像正常一样进行处理
/commonparent/{parentId}