http的请求体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,字段名一致即可

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

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值