当前位置:   article > 正文

http的请求体body的几种数据格式_body数据请求

body数据请求

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,字段名一致即可

  1. @PostMapping(value = "/string")
  2. public String postman(String name, Integer age){
  3. String result = name + age;
  4. return result;
  5. }

复杂类型参数

选择用json格式

单一一个List

  1. @PostMapping(value = "/list")
  2. public String postman2(@RequestBody List<Integer> list){
  3. String result = list.toString();
  4. return result;
  5. }

另外,选择了json后端就只能对应一个@RequestBody,也即是只能接收一个对象,当然这一个对象中可以包含多个子对象,所以不要想着如何同时传两个json对象过去。如果真的需要同时传两个单独对象,后端要使用@RequestPart,具体可看Postman同时用post发送多个对象+文件到Controller的实现方法

文件上传

使用org.springframework.web.multipart.MultipartFile接收文件

  1. @RestController
  2. @RequestMapping("/file")
  3. public class AController {
  4. @PostMapping("/upload")
  5. public String uploadfile(MultipartFile multipartFile,String data) throws IOException {
  6. String s = multipartFile.getOriginalFilename() + data;
  7. return s;
  8. }
  9. }

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博客

Postman中几个body请求格式区别及使用说明_postman的body_有时候我也会的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/766168
推荐阅读
相关标签
  

闽ICP备14008679号