zoukankan      html  css  js  c++  java
  • 在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 ...
    }
    

      

  • 相关阅读:
    python学习笔记(excel中处理日期格式)
    python学习笔记(生成xml)
    python学习笔记(接口自动化框架 V1.0)
    python学习笔记(excel+unittest)
    刷题[RoarCTF 2019]Easy Java
    刷题[GKCTF2020]
    php bypass disable function
    刷题[MRCTF2020]Ezpop
    刷题[安恒DASCTF2020四月春季赛]Ez unserialize
    刷题[HFCTF2020]EasyLogin
  • 原文地址:https://www.cnblogs.com/mabiao008/p/8594226.html
Copyright © 2011-2022 走看看