在GET方式下,有多个参数时的处理

Posted 程序员之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在GET方式下,有多个参数时的处理相关的知识,希望对你有一定的参考价值。

在一个查询接口中,需要的参数比较多,如果还是使用GET方式进行请求的话,那么,Controller 中的方法的参数列表将会非常多,如:

public List<String> getName(@RequestParam String query1,
                            @RequestParam String query2,
                            @RequestParam String query3,
                            ......) {
        return new ArrayList<>();
}

  这样的话参数太多,不好看

方法一 
换成POST请求,将所有参数封装成一个类,然后使用 @RequestBody注解将参数自动解析成该类的一个实例,如:

public List<String> getName(@RequestBody QueryDto queryDto) {
        return new ArrayList<>();
}

public class QueryDto {
    private String query1;
    private String query2;
    private String query3;

    // getter, setter ...
}

  不过,有人认为RESTFUL“规范”,认为POST不应该用来进行查询。这么想的确合理,不过,这个“规范”只是建议大家这么来遵守,并不是强制要求。有兴趣的,可以看看京东的请求,它的部分查询请求也是用的POST。

方法二 
还是使用GET请求,但是将所有请求参数通过JSON格式来传递,controller拿到参数后,将该JSON转化为相应的对象,如:

public List<String> getName(@RequestParam String queryDtoStr) {
        QueryDto queryDto = new Gson().fromJson(queryDtoStr, QueryDto .class);
        // ....
        return new ArrayList<>();
}

public class QueryDto {
    private String query1;
    private String query2;
    private String query3;

    // getter, setter ...
}

  

以上是关于在GET方式下,有多个参数时的处理的主要内容,如果未能解决你的问题,请参考以下文章

渲染单个网页需要多少HTTP get()请求?一个还是多个?

是否有在单个活动中处理多个片段的 Android 设计模式?

js中get方式如何传多个参数

按下锁定/主页按钮时的通知,单击返回选项卡片段时的通知

spring cloud——feign为GET请求时的对象参数传递

使用导航抽屉旋转时的片段更改