首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GET请求中的过滤器

GET请求中的过滤器
EN

Stack Overflow用户
提问于 2021-02-20 02:35:07
回答 1查看 30关注 0票数 0

在GET请求中实现过滤器的最佳方式是什么?

假设有一个方法可以获取id等于1的用户:/user?id=1

如果您需要处理大量类似的过滤器,则将使用/user? id=1&name=Sam&...,而不是所有过滤器。实现处理的最佳方式是什么?

代码语言:javascript
运行
复制
@GetMapping("/user")
public String getUser(@RequestParam("name", required=false) String name) {
    // ...
}
EN

回答 1

Stack Overflow用户

发布于 2021-02-20 02:45:49

如果遵循REST约定,则不会将标识符作为查询参数添加,而是作为路径参数添加。(/users/1)

回到拥有多个查询参数的问题,您有一些选择。

一种是如您所述,使用required=false选项拥有多个RequestParams。

代码语言:javascript
运行
复制
@GetMapping("/user")
public String getUser(@RequestParam(required=false) String firstName,
                      @RequestParam(required=false) String lastName,
                      @RequestParam(required=false) String nickName,
                      @RequestParam(required=false) String mail,
                      @RequestParam(required=false) String sex) {
    // ...
}

另一种选择是使用Java8 Optional

代码语言:javascript
运行
复制
@GetMapping("/user")
public String getUser(@RequestParam Optional<String> String firstName,
                      @RequestParam Optional<String> String lastName,
                      @RequestParam Optional<String> String nickName,
                      @RequestParam Optional<String> String mail,
                      @RequestParam Optional<String> String sex) {
    // ...
}

但总而言之,如果您有多个搜索选项,最好的方法是将GET请求转换为POST请求,在一个搜索对象中传递所有搜索选项。您可以在GET请求中传递请求正文,但它可能会被某些库/服务器忽略,因此不建议这样做。

代码语言:javascript
运行
复制
@PostMapping
public String getUser(@RequestBody UserSearchRequest searchRequest) {
    // ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66283199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档