content-type一些疑惑
相信很初学者在使用body-parser
时感到疑惑
我们先说说他的作用,其实很简单,就是把HTTP请求里的请求体传参解析出来
我们在使用接口测试工具时(例如:postman
Apipost
)
可以看到请求体传参有 content-type
分别是 multipart/form-data
和 application/x-www-form-urlencoded
multipart/form-data
- 一般传送文件或者二进制数据,也可以传文本
- 数据以多个part形式传输
- 会指定一个boundary来分割不同part
1 | Content-Type: multipart/form-data; boundary= |
application/x-www-form-urlencoded
- 一般传输文本
- 格式是
key=value&key2=value2
,其实和query参数一样,只是后者在请求头,前者在请求体里 - 字符会经过URL编码
- 转成ASCII码
- 用16进制表示
- 每个字节前加%
- 如果字符不能转成ASCII码,则转成UTF-8编码,关于编码详见此处
Eg: “中”在UTF-8编码中表示为0xE4B8AD –> %E4%B8%AD
raw
- 一般传输图片、视频、音频
- 表示原始未经处理的二进制数据,没有特定编码方式
body-parser
我们再说回body-parser
它支持解析urlencoded
而不支持form-data
如果想要解析form-data
可以使用busboy