在GET方式下,有多個參數時的處理
阿新 • • 發佈:2018-03-18
body getname ron 自動 arr tro rest 封裝 from
在一個查詢接口中,需要的參數比較多,如果還是使用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方式下,有多個參數時的處理