http的请求体body的几种数据格式:multipart/form-data;application/x-www-from-urlencoded;raw;binary
multipart/form-data
key - value 格式,主要用来上传文件,它会将表单的数据处理成一条消息,以标签为单元,用分隔符分开。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息。
PS:使用时后端代码不能有@RequestBody,否则会出错
application/x-www-from-urlencoded
key-value 格式,比如 name=java&age=23
但不支持文件传输,与 form-data 区别在于http请求body格式不太一样,另外就是不可以设置content-type,而 form-data 是可以设置每个value的 content-type
PS:使用时后端代码不能有@RequestBody,否则会出错
raw
选择text,则请求头是: text/plain
选择javascript,则请求头是: application/javascript
选择json,则请求头是: application/json (如果想以json格式传参,就用raw+json就行了)
选择html,则请求头是: text/html
选择application/xml,则请求头是: application/xml
以常用的json为例:
tip:想要格式变好看就点美化(Beautify)
PS:使用时后端代码必须有@RequestBody,否则会出错
binary
相当于 Content-Type:application/octet-stream ,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。(一般用的不多)
multipart/form-data 与 x-www-form-urlencoded 区别
- multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息。
- x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。
使用选择
简单类型参数
用form-data与x-www-from-urlencoded都可以,直接表单填写key-value,字段名一致即可
@PostMapping(value = "/string")
public String postman(String name, Integer age){
String result = name + age;
return result;
}
复杂类型参数
选择用json格式
单一一个List
@PostMapping(value = "/list")
public String postman2(@RequestBody List<Integer> list){
String result = list.toString();
return result;
}
另外,选择了json后端就只能对应一个@RequestBody,也即是只能接收一个对象,当然这一个对象中可以包含多个子对象,所以不要想着如何同时传两个json对象过去。如果真的需要同时传两个单独对象,后端要使用@RequestPart,具体可看Postman同时用post发送多个对象+文件到Controller的实现方法
文件上传
使用org.springframework.web.multipart.MultipartFile接收文件
@RestController
@RequestMapping("/file")
public class AController {
@PostMapping("/upload")
public String uploadfile(MultipartFile multipartFile,String data) throws IOException {
String s = multipartFile.getOriginalFilename() + data;
return s;
}
}
Params和Body的区别
get请求
- 适合向服务器发送数据量较小的请求
- 比如查询操作
- 请求参数会放在url里,用?分割参数,多个参数用 & 链接
- params里的参数会被放在url里,所以get请求时参数添加在params里
post请求
- 适合项数据量发送数据量较大的请求
- 比如添加操作,上传文件等
- 参数不会放在url里
- body里的参数不会放在url里,所以post请求时参数添加在body里
@RequestParam和@RequestBody的区别
- 若后端使用 @RequestParam 来接收前端传过来的参数,Content-Type 要设置为 application/x-www-form-urlencoded,并且需要对 data 里面的参数使用 qs.stringify 来进行转换(qs库包含在axios中),转换之后后端才能正常获取。
- 若后端使用 @RequestBody 来接收前端传过来的参数,Content-Type 要设置为 application/json。
postman中 form-data、x-www-form-urlencoded、raw、binary的区别_wangjun5159的博客-CSDN博客文章来源:https://www.toymoban.com/news/detail-719607.html
Postman中几个body请求格式区别及使用说明_postman的body_有时候我也会的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-719607.html
到了这里,关于http的请求体body的几种数据格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!