首页 > 解决方案 > 我的控制器中的排序应该是什么样的?

问题描述

我的 REST API 有一个 Spring 控制器,目前允许通过各种参数进行搜索:

@GetMapping(value = "/dogs", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ResponseDTO<DogDTO>> getDogs(
  @RequestParam(defaultValue = "1") Integer page,
  @RequestParam(defaultValue = "10") Integer size,
  @RequestParam(required = false) String colour,
  @RequestParam(required = false) String breed,
  @RequestParam(required = false) String name,

例如/api/dogs?colour=black&breed=labrador

响应当前显示在表格中,但现在需要在这些列中的任何一个上搜索 asc 或 desc - 但不能同时搜索多个列。

我应该如何更改我的控制器定义以添加对这些参数的排序并指定 asc 和 dec?
这些更改后的网址会是什么样子?

例如

/api/dogs?colour=black?sort=-id
/api/dogs?colour=black?sort=id&dir=asc

标签: javaspring-bootrest

解决方案


你是对的,如果你遵循相同的逻辑,你必须再添加 2 个参数 sort 和 dir。

@RequestParam(required = false) String sort
@RequestParam(required = false) String dir

/api/dogs?color=black&sort=column&dir=asc

在您的 DAO 中修改您的查询并添加

按列 asc 从表中选择列;


推荐阅读