content-type | type | data中數據的傳送格式 | data的格式 | springmvc中可以獲取數據的方式 |
application/x-www-form-urlencoded | post | Form Data | 必須是json對象 | @RequestParam |
get | Query String Parameters | 必須是json對象 | @RequestParam | |
application/json | post | Request Payload | 必須是json格式字符串 | @RequestBody |
get | Query String Parameters | 必須是json對象 | @RequestParam | |
multipart/form-data | post | Form Data | 一般用於文件上傳,當然也可以攜帶參數 | 可以同file-upload.jar來對數據 |
注意:在application/x-www-form-urlencoded類型下,使用post發送List類型的數據時,後端對應的參數名稱應該加上"[]"。因爲瀏覽器會將該content-Type下的List數據進行拆分。
舉例:
// demo使用的是jQuery的ajax函數 $.ajax({ url: "mapOfXFU", type: 'POST', cache: false, dataType:'json', contentType: "application/x-www-form-urlencoded;charset=utf-8", data: {name : 'jack', args : [1, 2, 3], args2 : [{id:1}, {id:2}]}, success: function (data) { }, error : function(){ } }); // ---------------------------------------------------------------------------- 發出該ajax請求後,瀏覽器會將其中的data數據拆分後打包成FormData類型: >Form Data (6) name: jack args[]: 1 args[]: 2 args[]: 3 args2[0][id]: 1 args2[1][id]: 2 // ---------------------------------------------------------------------------- // 後端正確的接口對應 @RequestMapping("/mapOfXFU") @ResponseBody public ResponseObject putListMap(@RequestParam(value = "name", required = false)String name, @RequestParam("args[]")List<String> list) { // do something you want... }