POST请求中的四种数据类型

为什么POST请求中会出现这些数据类型呢?

  1. 不同类型的数据用对应的编码格式效率比较高
  2. 便于数据校验
  3. 灵活性比较高
  4. 设定一些标准

Content-Type 包含三个指令:

  • media type:声明传输数据的媒体类型( MIME );
  • charset:声明传输数据采用的是何种字符集;
  • boundary:数据分界符,有多部分数据实体时(multipart/form-data、multipart/byteranges),该指令是必需的,用于封装消息的多个部分的边界;其由 1 到 70 个字符组成,浏览器中会自动生成,该字符集对于通过网关鲁棒性良好,不以空白结尾。

POST请求常见数据类型

GET 和 POST 是我们最常用的两个 HTTP 请求方法。对于 GET请求,需要传递的数据比较简单,我们通常使用 QueryString 的方式传递,例如 https://test.com/api?a=1&b=2,那么 Content-Type 的值就不是那么重要了。对于 POST 请求,Content-Type 的值就非常重要了,需要根据不同场景做不同选择。

对于POST请求来说,在请求头中的content-type值比较重要一些。get请求一般是url请求

1. application/x-www-form-urlencoded

该值是 Form 默认的编码方式,使用该值时,提交表单时内容必须经过如下规则编码:

  1. 空格转换为 “+” 号;非字母数字的其它字符转换为类似于“%E0”的两位 16 进制表示的 ASCII 码;换行符被转换为“CR LF”;
  2. 数据项名称和数据值以“=”号分割,数据项与数据项之间以“&”分割;

这种POST请求的数据类型,是form的默认编码。

2. multipart/form-data

对于二进制文件或者非 ASCII 字符的传输,application/x-www-form-urlencoded 是低效的。对于包含文件、二进制数据、非 ASCII 字符的内容,应该使用 multipart/form-datamultipart/form-data 的请求体包含多个部分,需要通过 boundary 字符分割。

content-type值中可以写三个参数,media type、charset、boundary(浏览器自动生成)

这个multipart/form-data编码传输二进制文件比较高效。

3. application/json

application/json 作为响应头比较常见,目前也流行在 POST 请求中使用,以序列化的 JSON 字符串形式传输,更易于后端解析,可读性更高。

微信小程序中 wx.request API 默认便是使用此方式传输数据。

项目中也比较常用

4. application/octet-stream

用于传输二进制数据。可用于上传文件的场景。在 Postman 中,还可以看到 “binary” 这一类型,指的就是一些二进制文件类型。如 application/pdf,指定了特定二进制文件的 MIME 类型。就像对于text文件类型若没有特定的子类型(subtype),就使用 text/plain。类似的,二进制文件没有特定或已知的 subtype,就使用 application/octet-stream,这是应用程序文件的默认值,一般很少直接使用 。

对于 application/octet-stream,只能提交二进制,而且只能提交一个二进制,如果提交文件的话,只能提交一个文件,后台接收参数只能有一个,而且只能是流(或者字节数组)。

很多 web 服务器使用默认的 application/octet-stream 来发送未知类型。出于一些安全原因,对于这些资源浏览器不允许设置一些自定义默认操作,导致用户必须存储到本地以使用。一般来说,设置正确的MIME类型很重要。

这个和上面的multipart/form_data差不多,但是上传的文件是不能处理,对应客户端来说会直接下载保持到本地,而服务器将会将其当成二进制流处理。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js 是一个非阻塞 I/O 的环境,能够快速地构建高效的网络应用程序。而 Express 则是 Node.js 最受欢迎的 Web 框架之一,它为 Node.js 提供了大量的功能和模块。其,解析 POST 请求数据格式是 Express 最常用的功能之一。 Express 支持解析四种 POST 请求数据格式:URL-encoded 格式、JSON 格式、Raw 格式和 multipart/form-data 格式。 1. URL-encoded 格式:这是最常用的 POST 数据格式,也是默认格式。它的数据格式类似于 URL 查询字符串,通过 key=value 的形式传递参数。Express 提供了 body-parser 间件,可以自动将 URL-encoded 格式的请求数据解析成 JSON 格式。 2. JSON 格式:JSON 是一种轻量级的数据交换格式,它比 XML 更加简洁易懂,也更加易于解析。如果服务端需要处理 JSON 格式的请求,可以使用 express.json() 间件来解析请求数据。 3. Raw 格式:Raw 格式是一种原始数据格式,不做任何编码和处理。如果客户端发送POST 请求数据是 Raw 格式的,服务端需要使用 body-parser 间件提供的 raw() 方法解析请求数据,将其转换成 Buffer 类型。 4. multipart/form-data 格式:这种格式常用于上传文件或者提交包含二进制数据的表单。如果服务端需要处理 multipart/form-data 格式的请求,可以使用 multer 间件来解析请求数据。multer 间件可以处理文件上传,同时还支持设置上传文件的限制条件。 综上所述,Express 提供了多种间件来解析不同格式的 POST 请求数据,开发者可以根据实际需求选择对应的间件来使用。这些间件的使用方式都非常简单,在应用程序添加一条或几条间件即可完成对 POST 请求数据的解析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值