如何添加多个查询参数不同的 RestController 端点?



如果缺少特定的查询参数,如何简单地重定向 url?

@RestController
public class PersonController {
//only in case the "sort" query parameter is missing
@GetMapping("/persons")
public String unsorted() {
return "redirect:/persons?sort=name";
}
//only in case the "sort" query parameter exists
@GetMapping("/persons")
public String sorted() {
//...
}
}
  • 使用 @RequestParam 提取查询参数
  • 为@RequestParam添加参数:值、默认值、必需

使用 Java>= 8:

@RestController
public class PersonController {
@GetMapping("/persons")
public String personList(@RequestParam(value = "sort", defaultValue = "name") Optional<String> sort) {
//handling process here
}
}

使用 Java <8:

@RestController
public class PersonController {
@GetMapping("/persons")
public String personList(@RequestParam(value = "sort", defaultValue = "name", required=false) String sort) {
//handling process here
}
}

你可以使用 @GetMapping.params

@GetMapping(value = "/persons", params = "sort")
public String sorted() {

您可以使用params元素。一个映射将支持排序参数存在时的params="sort",另一个映射将支持params="!sort"排序参数何时缺失。

但是,您可能需要考虑使用默认值,而不是执行重定向。重定向有什么好处?它将要求服务器响应,然后让客户端发出第二个HTTP请求。

使用参数

@RestController
public class PersonController {
//only in case the "sort" query parameter is missing
@GetMapping(value = "/persons", params = "!sort")
public String unsorted() {
return "redirect:/persons?sort=name";
}
//only in case the "sort" query parameter exists
@GetMapping(value = "/persons", params = "sort")
public String sorted() {
//...
}
}

使用默认值

@RestController
public class PersonController {
//only in case the "sort" query parameter exists
@GetMapping("/persons")
public String sorted(
@RequestParam(name = "sort", defaultValue = "name") String sort)
{
//...
}
}

您可以设置默认值:

@RestController
public class PersonController {
//only in case the "sort" query parameter is missing
@GetMapping("/persons")
public String unsorted(@RequestParam(value = "sort", defaultValue = "name") String name) {
// do logic
}
}

您还可以设置缺失值的默认值并继续前进

@RequestParam(value = "sort", defaultValue = "name") String name

相关内容

  • 没有找到相关文章

最新更新