发送到查询的请求数

时间:2017-07-09 17:50:32

标签: java spring spring-mvc spring-boot

我有一个控制器来排序用户

@GetMapping(value = "/users", produces = MediaType.APPLICATION_JSON_VALUE)
public HttpEntity<List<User>> getUsers(
        @RequestParam(required = false) String q,
        @RequestParam(required = false, defaultValue = "1") int page,
        @RequestParam(required = false, defaultValue = "1") int pageSize,
        @RequestParam(required = false, defaultValue = "id") String sort
) {
    return Optional
            .ofNullable(q)
            .map(v -> ResponseEntity.ok().body(userService.findByUsernameContaining(q, page - 1, pageSize, new Sort(Sort.Direction.ASC, sort))))
            .orElseGet(() ->
                    ResponseEntity.ok().body(userService.findAll(page - 1, pageSize, new Sort(Sort.Direction.ASC, sort)))
            );
}

可以作为参数4值。它看起来不太美观,我想知道它是如何在视觉上得到改善的。

  1. 我想知道用这四个变量创建一个类,然后创建一个注册了@ModelAttribute的方法。但是,我很快放弃了,因为我无法根据需要设置'defaultValue'。

  2. 我提出的方法是保留参数'id'和其他三个以使'Pegeable'对象附加'@ PageableDefault',其值设置为'size = 1,page = 1,sort =“id”。但是,这种方法也不会通过,因为在将页码传递给站点时,我必须从“页面”的值中减去1,在这种情况下,这是不可能的。

  3. 你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我个人认为你所描述的许多@RequestParam没有问题。

考虑优势:

  • 很清楚
  • 很容易测试

现在的劣势:

  • 这是详细的

对我来说,优点胜过劣势。除非我遗漏了什么。