参阅:https://blog.csdn.net/qq_41063141/article/details/101505956,在此基础上添加代码使用说明
一、Params与Body
二者区别在于请求参数在http协议中位置不一样。
Params 它会将参数放入url中以?区分以&拼接
Body则是将请求参数放在请求体中
二、body中不同格式
2.1 multipart/form-data
key - value 格式输入,主要特点是可以上传文件
注意:使用时后端代码不能有@RequestBody,否则会出错
2.2 application/x-www-from-urlencoded
同样是key - value 格式输入,但不支持文件传输,与form-data区别在于http请求body格式不太一样,另外就是不可以设置content -type,而form-data是可以设置每个value的content -type
注意:使用时后端代码不能有@RequestBody,否则会出错
2.3 raw
选择text,则请求头是: text/plain
选择javascript,则请求头是: application/javascript
选择json,则请求头是: application/json (如果想以json格式传参,就用raw+json就行了)
选择html,则请求头是: text/html
选择application/xml,则请求头是: application/xml
以常用的json为例:
注意:使用时后端代码必须有@RequestBody,否则会报错。
@DatapublicclassChild{privateString name;privateInteger age;privateList<Integer> list;}
@RequestMapping("/postman")@RestControllerpublicclassPostmanParam{@PostMapping(value ="/listInObj")publicStringpostman1(@RequestBodyChild child){String result = child.getName()+ child.getAge()+ child.getList().toString();return result;}@PostMapping(value ="/bodystring")publicStringpostman(Child obj){return obj.toString();}}
2.4 binary
相当于Content-Type:application/octet-stream,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件
三、使用选择
最常用的还是json和form-data,form-data主要用于文件操作,以及文件+对象的时候使用
3.1 简单类型参数
form-data与x-www-from-urlencoded都可以,直接表单填写key-value,字段名一致即可
@PostMapping(value ="/string")publicStringpostman(String name,Integer age){String result = name + age;return result;}
3.2 复杂类型请选择json格式
单一一个List
@PostMapping(value ="/list")publicStringpostman2(@RequestBodyList<Integer> list){String result = list.toString();return result;}
另外,选择了json后端就只能对应一个@RequestBody,也即是只能接收一个对象,当然这一个对象中可以包含多个子对象,,,
所以不要想着如何同时传两个json对象过去,,,,
另外如果真的需要同时传两个单独对象,后端请使用@RequestPart,具体操作见页末
3.3 文件上传
使用org.springframework.web.multipart.MultipartFile接收文件
@RestController@RequestMapping("/file")publicclassAController{@PostMapping("/upload")publicStringuploadfile(MultipartFile multipartFile,String data)throwsIOException{String s = multipartFile.getOriginalFilename()+ data;return s;}}
注意KEY需要与java方法中参数名一致,否则接收不到
3.4 多对象及文件+对象同时传递
戳这里
版权归原作者 有时候我也会 所有, 如有侵权,请联系我们删除。