在GET方式下,有多個參數時的處理

在一個查詢接口中,須要的參數比較多,若是仍是使用GET方式進行請求的話,那麼,Controller 中的方法的參數列表將會很是多,如:java

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

  這樣的話參數太多,很差看對象

方法一 
換成POST請求,將全部參數封裝成一個類,而後使用 @RequestBody註解將參數自動解析成該類的一個實例,如:blog

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轉化爲相應的對象,如:get

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 ...
}
相關文章
相關標籤/搜索