POST请求中的四种数据类型

这篇具有很好参考价值的文章主要介绍了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差不多,但是上传的文件是不能处理,对应客户端来说会直接下载保持到本地,而服务器将会将其当成二进制流处理。文章来源地址https://www.toymoban.com/news/detail-482011.html

到了这里,关于POST请求中的四种数据类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 字节一面:post 为什么会发送两次请求?被问懵了…

    前言 最近博主在 字节面试 中遇到这样一个面试题,这个问题也是前端面试的高频问题,因为在前端开发的日常开发中我们总是会与post请求打交道,一个小小的post请求也是牵扯到很多知识点的,博主在这给大家细细道来。 同源策略 在浏览器中,内容是很开放的,任何资源都

    2024年02月08日
    浏览(42)
  • Java中的四种引用类型及其使用方式

    Java中有四种引用类型,分别是强引用(Strong Reference)、软引用(Soft Reference)、弱引用(WeakReference)、虚引用(PhantomReference)。 这要从Java管理内存的方式说起。Java为了将程序员从内存管理中解救出来,即不让程序员自己申请堆内存(比如C语言程序员需要通过malloc请求操作系统分配一

    2023年04月09日
    浏览(34)
  • 【C++干货铺】C++中的四种类型转换

    ========================================================================= 个人主页点击直达:小白不是程序员 C++系列专栏:C++干货铺 代码仓库:Gitee ========================================================================= 目录 C语言中的类型转换 为什么C++需要四种类型转化 C++强制类型转换 static_cast reinter

    2024年01月25日
    浏览(34)
  • Service 在 K8s 中的四种类型

    CSDN话题挑战赛第2期 参赛话题:万家争鸣的云计算修罗场 ClusterIP模式 clusterIP 主要在每个 node 节点使用 iptables,将发向 clusterIP 对应端口的数据,转发到 kube-proxy 中。然后 kube-proxy 自己内部实现有负载均衡的方法,并可以查询到这个 service 下对应 pod 的地址和端口,进而把数据

    2024年02月14日
    浏览(27)
  • 美团一面:说一说Java中的四种引用类型?

    在JDK1.2之前Java并没有提供软引用、弱引用和虚引用这些高级的引用类型。而是提供了一种基本的引用类型,称为 Reference 。并且当时Java中的对象只有两种状态:被引用和未被引用。当一个对象被引用时,它将一直存在于内存中,直到它不再被任何引用指向时,才会被垃圾回收

    2024年03月22日
    浏览(34)
  • 检测数据类型的四种方法

    一、数据类型: 1、基本数据类型:String、Number、Boolean、Null、Undefined、Symbol 、BigInt 2、引用数据类型:Object、Array、Function、Date、RegExp 二、检测数据类型的四种方法 1.typeof检测   特点:typeof只能检测基本数据类型(除了null),不能准确的检测引用数据类型。 object、array、

    2024年02月15日
    浏览(36)
  • 【图解RabbitMQ-6】说说交换机在RabbitMQ中的四种类型以及使用场景

    🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开发。技术尚浅,闭关学习中······ 😎人生感悟:尝尽人生百味,方知世间冷暖。

    2024年02月07日
    浏览(65)
  • NAT的四种类型及类型检测

    考虑到UDP的无状态特性,目前针对其的NAT实现大致可分为Full Cone、Restricted Cone、Port Restricted Cone和Symmetric NAT四种。值得指出的是,对于TCP协议而言,一般来说,目前NAT中针对TCP的实现基本上是一致的,其间并不存在太大差异,这是因为TCP协议本身 便是面向连接的,因此无需考

    2024年02月07日
    浏览(33)
  • 【C++】C++的四种类型转换

    当等号两边的类型不同的时候、形参与实参类型不匹配的时候、返回值类型与接收返回值类型不一致时,就需要发生 类型转化 。 而类型转换又 分为隐式类型转换和显示类型转换 。 隐式类型转换是编译器在编译阶段自动进行,能转就转,不能转就编译失败。 而显示类型转换

    2023年04月09日
    浏览(42)
  • C++11的四种强制类型转换

    目录 语法格式 static_cast(静态转换) dynamic_cast(动态转换) const_cast(常量转换)  reinterpret_cast(重解释) cast-name typename (expression) 其中 cast-name 为 static_cast 、 dynamic_cast 、 const_cast  和  reinterpret_cast 之一, typename 为需要转换的目标类型,而 expression 是被强制转换的值。 1、父类到

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包