Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 具有多个参数的restfulspring服务_Java_Spring_Url_Rest_Resttemplate - Fatal编程技术网

Java 具有多个参数的restfulspring服务

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中使用

我正在构建一个restful服务,它需要接受任意数量的参数,而不是下面示例中的参数

假设以下服务程序

@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}