在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 ...
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM