6

如何queryparam以真正宁静的方式在春天获得对宁静 Web 服务的支持......

例如我有如下网址

本地主机:8080/myapp/booksearch/title/{title}/author/{author}?sortby=relevance&year=2013

标题和作者我可以得到@PathVariable.....

我想要 sortby 和 year 可选的地方..

4

3 回答 3

22

您可以@RequestParam在方法参数上使用注释

@RequestMapping (...)
public String getBooks(@RequestParam(required = false, value = "sortby") String sortBy, @RequestParam(required = false, value = "year") String year) {...}

如果未提供请求参数,@RequestParam注释还具有defaultValue用作值的属性。没有它,如果未提供参数,null将作为该参数的参数传递。

于 2013-09-21T19:49:13.437 回答
1

为了获得更好的订单,您可以使用 Swagger,顺便说一下,它还可以让您记录您的端点。

您可以使用 Class 对您的 queryParams 进行分组并将其作为 Controller 方法的参数传递,如下所示:

@RequestMapping("/books")
public String getbBoks(MyParams params) {...}

为了描述参数,你只需要这样做:

@ApiModel
  public class MyParams {
  @ApiParam(
    name = "sortby",
    type = "string",
    required = false
)
private String sortby;

@ApiParam(
    name = "year",
    example = "2017 , 2016",
    type = "integer",
    required = false
)
private int year;
  }
于 2018-03-18T00:38:02.887 回答
1

Spring 注解 @RequestParam 用于获取查询参数,而 @PathVariable 用于获取路径或 url 中用大括号声明的变量,如localhost:8080/myapp/booksearch/title/{title}.

因此,在您的情况下,您需要 @RequestParam 来获取 sortedBy 和 year 值。你可以简单地写public String getBooks(@RequestParam("sortby") String sortBy)

于 2022-02-08T07:50:05.517 回答