繁体   English   中英

如何在get请求中传递几个参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM