HTTP请求方法之POST请求的三种常见数据提交格式

这篇具有很好参考价值的文章主要介绍了HTTP请求方法之POST请求的三种常见数据提交格式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

🌐 application/x-www-form-urlencoded

🌐 multipart/form-data

🌐 application/json


HTTP请求方法之POST请求的三种常见数据提交格式

HTTP请求方法之POST请求的三种常见数据提交格式  

本文所讲的 POST 请求是 HTTP/1.1 协议中规定的众多 HTTP 请求方法的其中最常用的一个。一般使用 POST 请求方法向服务器发送数据(主要是一些创建更新操作),本文讨论的是 POST 请求方法常用的三种数据提交格式。

由于 HTTP/1.1 协议中并没有对请求使用什么编码方式进行规定,所以,理论上开发者完全可以自己决定请求的 Body 体使用什么格式,当然实际上大家都还是用通用的那么几种编码方式来提交数据(生态很关键)。

注:以下排名顺序不分先后哦。。。

🌐 application/x-www-form-urlencoded

对于浏览器原生的 form 表单,enctype 的值不指定的话,默认就是这个家伙。实际上大部分情况都使用它即可,编码方式足够简单高效,各方面支持也都很完备,如各大浏览器调试工具、各大抓包软件等。

POST http://www.example.com HTTP/1.1
Content-Type: application/x-www-form-urlencoded;charset=utf-8

key1=val1&key2=val2

基本的请求类似上面这样,数据的编码方式采用 key1=val1&key2=val2 的形式,对其中的键值对都需要使用 URL Encode 编码一下。其实就是和 GET 请求的数据提交格式是一样的,只不过位置从 Request URL 上换到了 Request Body 里。

这种格式结构简单,但对于数据层级较深的情况,比如一些有复杂层级关系的接口数据,这种方式就显得有点力不从心了。另一方面,对于需要上传二进制数据(比如图像、音频等文件),这种方式就不那么高效了,而且对于非 ASCII 码的数据就丢失了,所以传文件的情况就不能使用这种方式。

◼️ 适用场景:数据量不大、数据层级不深的情况下强烈建议这种数据提交格式。

🌐 multipart/form-data

当你需要提交文件、非 ASCII 码的数据或者是二进制流数据,则使用这种提交方式。类似下面这个请求示例:

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryPAlLG7hJKNYc4ft3

------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"

demo
------WebKitFormBoundaryPAlLG7hJKNYc4ft3
Content-Disposition: form-data; name="file"; filename="demo.png"
Content-Type: image/png


------WebKitFormBoundaryPAlLG7hJKNYc4ft3--

第二行指定编码方式 Content-Type 为 multipart/form-data,紧接着生成一个分界线 boundary 即 ----WebKitFormBoundaryPAlLG7hJKNYc4ft3,又臭又长的目的是为了避免和 Body 正文内容有冲突,它的作用是用来分隔不同的字段。

Body 体分为多个结构类似的部分,每一部分以 --boundary 开头,因为本次请求生成的 boundary 为 ----WebKitFormBoundaryPAlLG7hJKNYc4ft3,所以最终是 ------WebKitFormBoundaryPAlLG7hJKNYc4ft3。接着是描述内容的元信息,包括字段名称,如果是文件则还有文件名称和文件类型。接着留一空行,然后才是字段值。什么时候结束呢,以 --boundary-- 标志结束。

这种方式本就是专为上传文件的场景设计的,虽然你也可以使用这种方式传递普通数据,但无疑会增加不少数据包的大小(这么多 boundary 还是有不少空间占用的)。

◼️ 适用场景:文件上传。

🌐 application/json

很明显在 JSON 格式火之前,肯定没有它的,前面说到使用什么提交数据方式是没有硬性规定的,所以在 JSON 格式火了以后,尤其以其优秀的数据结构表达能力,逐渐流行开来,现在我们对它完全不会陌生。

POST http://www.example.com HTTP/1.1 
Content-Type: application/json;charset=utf-8

{"name":"xfly","age": 24, "hobby":["x","xx","xxx"]}

◼️ 适用场景:数据结构较复杂,层级较深的情况。


💡 参考资料

| post请求的四种数据格式 | 前端post请求方式传参的格式详解 | HTTP 方法:GET 对比 POST | 

HTTP请求方法之POST请求的三种常见数据提交格式文章来源地址https://www.toymoban.com/news/detail-491829.html

到了这里,关于HTTP请求方法之POST请求的三种常见数据提交格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 前端提交post请求却变成get请求的原因及解决方法

    导语:笔者在vue2项目中,使用axios封装post请求,提交请求时却变成get请求 编写登录方法时,把method敲成methods,而且又看到了提示就直接使用了(太粗心😭) [ Axios 中文文档 ] 改成如下代码即可 · 浏览器的默认请求模式是GET     当我们在浏览器地址栏中输入一个网址或单击链

    2024年02月06日
    浏览(91)
  • GET与POST:详述HTTP两大请求方法的语义、数据处理机制、安全特性与适用场景

    GET和POST方法在HTTP请求中具有明确的角色分工和特性差异。GET适用于读取操作和不敏感数据的传递,强调可缓存性和安全性,而POST适用于写入操作和敏感数据的提交,提供了更大的数据承载能力和更强的隐私保护。本文详细介绍了GET与POST请求方法的定义与用途、数据传递方式

    2024年04月14日
    浏览(37)
  • 【Linux】 网络配置常见的三种方法

    目录 前言 方法一:(在图形化界面修改) 方法二:(修改ifcfg-eth60文件) 1.配置虚拟网络编辑器  2.配置ip ​编辑  3.网络验证 方法三:(利用nmtui命令修改) 总结 文章用配置的网络,我整理出来的这三种方法这里我们用Redhat9演示,希望能够读者带来帮助。 在配置网络之前

    2024年03月15日
    浏览(41)
  • 数据结构(C语言实现)——常见排序算法的基本思想及实现(快速排序的三种方法和优化及非递归实现快速排序)

    生活中几乎处处都会用到排序,比如:网购时的店铺顺序,学生成绩的排名等,今天我们就来学习数据结构中常见的几种排序算法。 排序 :所谓排序,就是使一串记录,按照其中的某个或某些的大小,递增或递减的排列起来的操作。 稳定性 :假定在待排序的记录序列

    2023年04月24日
    浏览(60)
  • java跳出for循环的三种常见方法

    这篇文章主要给大家介绍了关于java跳出for循环的三种常见方法,需要的朋友可以参考下 一、 break语句:使用break语句可以结束整个for循环的执行: 当 i 等于5时, break 语句会将控制流程跳出 for 循环从而停止后续代码的执行。 二、 return语句:如果你想要跳出当前方法并且停止

    2024年04月23日
    浏览(35)
  • 安卓在子线程中实现更新UI界面的三种方法 Handler+Message、runOnUiThread、控件.post()

    1.说明 安卓中UI线程为主线程,更新UI界面必须在主线程中进行,在子线程中实现更新UI界面的三种方法:Handler、RunOnUiThread、控件.post() 2.1 Handler (1)定义handler (2)使用 2.2 控件.post() 2.3 在子线程中使用 runOnUiThread

    2024年02月12日
    浏览(44)
  • application/json-常见的post提交数据的方式

    在http协议中规定了GET、HEAD、POST、PUT、DELETE、CONNECT 等请求方式,其中比较常用的就是post和get,其中post用来向服务器提交数据,post只规定了提交的数据必须放在请求的主体中,但是并没有规定传输数据的编码方式。比较主流的有如下的几种编码方式。 1. application/x-www-form-url

    2024年02月13日
    浏览(35)
  • 使用C#编写HTTP POST请求方法

    使用C#编写HTTP POST请求方法 在C#中,我们可以使用HttpClient类来发送HTTP请求。下面是一个示例代码,演示如何使用C#发送HTTP POST请求:

    2024年02月05日
    浏览(49)
  • 深入理解通用的HTTP POST请求发送方法

    在现代的软件开发中,与服务端进行HTTP通信是一项基础而重要的任务。本篇博客将深入研究并详细解释一个通用的HTTP POST请求发送方法,该方法使用了 RestTemplate 库来简化HTTP通信。我们将逐行分析代码,理解每一步的操作,并通过一个简单的示例演示如何使用这个方法。 步

    2024年02月04日
    浏览(50)
  • RestTemplate.postForEntity 方法进行 HTTP POST 请求

    RestTemplate 是 Spring Framework 提供的一个用于处理 HTTP 请求的客户端工具。其中,postForEntity 是 RestTemplate 提供的用于发送 HTTP POST 请求并返回 ResponseEntity 对象的方法。 url(String):HTTP POST 请求的目标URL。 request(Object):要发送的请求体数据,通常是一个对象,它将被转换为请

    2024年02月03日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包