[英]how to pass several parameters in get request
我正在尝试检查我的方法是否适用于 API
@GetMapping(value = "/ads/in/rubrics/{ids}")
public List<Ad> findAllAdInRubricByIds(@PathVariable("ids") List<Integer> ids) {
return adService.findAllAdInRubricByIds(ids);
}
如何在获取请求中设置一些参数? 我就是这样尝试的
http://localhost:9999/mvc/ad/ads/in/rubrics/ids&ids=1&ids=2
http://localhost:9999/mvc/ad/ads/in/rubrics/ids&ids1=1&ids2=2
总是得到错误 400 错误请求
您将 PathVariables 与 RequestParams 混淆了。
PathVariable 是请求路径中的变量。 它不需要是最后一个字符。
@GetMapping("/api/{version}/foo/{idFoo}")
public Void getFooNumber(@PathVariable("version") Integer version, @PathVariable("idFoo") Integer idFoo){
return "1";
}
由于 PathVariables 是路径的一部分,因此它们始终是必需的。 如果您没有将它们包含在请求中,您最终将调用另一个端点,或者如果请求无法映射到任何端点,则会收到 404。
RequestParams 是在请求 URL 结束时收到的参数,在“?”之后特点。
@GetMapping("/api/foo")
public Void getFooNumber(@RequestParam(value="version", required=false) Integer version, @RequestParam(value="idFoo", required=true) Integer idFoo){
return "1";
}
使用 RequestParams,您可以为它们中的每一个定义是否需要。
您也可以混合使用它们并在相同的方法中使用 PathVariables 和 RequestParams。
在第一个示例中,请求 URL 将是“ .../api/1/foo/25 ”,而在第二个示例中,它将是“ .../api/foo?version=1&idFoo=25 ”
至于有一个数组或一个列表,如果你将参数定义为一个列表,你可以发送多个同名参数:
@GetMapping("/ads/in/rubrics")
public Void findAllAdInRubricByIds(@RequestParam(value="ids", required=true) List<Integer> ids){
return adService.findAllAdInRubricByIds(ids);
}
在这种情况下,您可以使用“ .../ads/in/rubrics?ids=1&ids=2&ids=3&ids=4 ”
http://localhost:9999/mvc/ad/ads/in/rubrics/?ids1=1&ids2=2
对于第一个参数,使用 a? 然后对于每个附加参数 a &
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.