【Web】浅谈Http的请求方式和数据请求格式ContentType

news2024/12/29 14:48:56

我本来Http的请求方式和数据请求格式是大家开发过程中都默认知道的事情,直到我发现我的前端竟然不知道表单请求的时候,我觉得我有必要跟大家一起来讨论一下这个话题了。有可能我的前端小伙伴在学习的时候一开始就入手现在比较流行的前端框架如Vue、React等,他们已经习惯了请求方式用POST,GET,然后请求格式用application/json,不知道原来除了这些常用的,还有其他的一些请求问题。

很多人不太知道请求方式数据的请求格式,反正我遇到几个前端,好像一开始都不是很清楚,每次都要解释上好几遍,他们才知道原来还有这么一回事。接下来我就简要的用我自己的理解来说一下这两个东西,如果觉得说错了的可以在评论里指出来一下,感谢小伙伴们了。

先仔细看我下面说的小故事,给大家一个大概的认知。

小明今天拿着一袋自家种的花生坐车去镇上,准备把这袋花生寄到外地远方的表哥家里。一到镇上他懵了,现在发展这么快么?怎么寄个东西也这么多快递选择,什么中通,圆通,韵达啥的。最终他选择了中通,走进中通的寄件点之后他又懵了,啥情况,寄个东西咋还有这么多运送方式,什么陆运,水运,空运的,思考再三后他还是选择了陆运,把花生寄到了表哥家里。

我们从这个故事里可以看出寄快递的两个特点,一个是寄快递时选择什么品牌寄,一个是寄快递通过什么寄运方式。而我们请求后端接口的时候也是一样,将请求参数运送到后台接口能被它正确识别也得有两个比较重要的参数就是请求方式和请求格式。而小明其实可以进行排列组合,比如(中通,陆运)、(中通,水运)、(中通,空运)、(圆通,陆运)、(圆通,水运)、(圆通,空运)…等等,而我们的请求方式和请求格式其实也是这样的,任意组合,就看后端他是怎么定义接收这些数据。
在这里插入图片描述

请求方式

HTTP/1.1协议中共定义了八种方法(有时也叫“动作”),来表明Request-URL指定的资源不同的操作方式
其中:
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

我们最常用的无非是 GET跟POST请求,有些遵循Restful开发风格的还会用到 PUT和DELETE

GET: 顾名思义是获取的意思,一般用来查询接口的使用,很少对数据有进行操作的接口用GET,不是不行而是很少这么看见有人这么用。它的特点就是请求参数会在URL的尾部?之后以&拼接。

比如: https://blog.csdn.net/javaboyweng?spm=1001.2101.3001.5343 ,所以早期GET请求其实是认为没有请求体的,请求参数就是拼接在URL的后面没的商量。

POST:有发布,交付的意思,一般用来做除查询之外的接口使用(少数情况的查询用这个也很适合,如查询条件非常多的时候),Restful开发风格中会用来做新增,因为GET方式参数暴露在URL后面比较危险,所以POST方式的时候,请求方式是放在请求体里的,正常通过浏览器上的URL地址你是看不到参数长啥样的。我相信没人开发登录界面的时候会使用GET请求吧。

PUT: Restful开发风格的时候用,一般用来做修改

DELETE:Restful开发风格的时候用,一般用来做删除

请求格式

这里我就说常用的三个数据请求格式,其他的小伙伴们有兴趣可以去了解一下。

这里说的数据请求格式其实就是 请求头中的 Content-Type属性了。常用的有如下三个,

  • application/x-www-form-urlencoded: 表单请求,不得不说这个很多前端都不知道,因为现在默认框架请求都是application/json了,这个东西可比application/json出来的早,当初它流行的时候,application/json都不知道有没有从娘胎里出来。表单请求的特点就是在请求体中是以&拼接的,有点像GET那个但是它是藏起来的,通常配合POST使用。例如 name=zhangsan&age=1

  • application/json: json请求,这个就是前端常用的一个数据请求格式,json请求的出现大大弥补了表单请求不能表达多层级的数据结构,并且可读性上来说非常好。例如:

{
    "name":"zhangsan",
    "age":24,
    "hobby":["唱","跳","Rap"],
    "son":{
        "name":"张小三",
        "age":"1"
    }
}

这种结构表单请求只能说臣妾做不到啊,要做到也得灰常曲折丫

  • multipart/form-data: 多部件请求,一般这个请求格式会在文件上传的时候使用,就是通常对接后端的上传接口的时候会使用到,例如前端会有这种代码,
var formData = new FormData();
formData.add("file",文件)
formData.add("name","这是另外的参数")

Restful

这里我不多说Resultful是啥玩意,它就是有一个博士提出来的一个规范,你开发的时候如果经理没啥要求的情况下,你爱怎么做怎么做。我下面的例子写一下你就领悟了。由于上面我们说到 请求方式跟请求格式是可以互相组合的

  • 以前风格开发
http://127.0.0.1:8080/user/list   查询用户列表, GET请求
http://127.0.0.1:8080/user/add    添加用户,POST请求
http://127.0.0.1:8080/user/edit    修改用户,POST请求
http://127.0.0.1:8080/user/del    删除用户,POST请求
  • Restful风格开发
http://127.0.0.1:8080/user   查询用户列表, GET请求
http://127.0.0.1:8080/user   添加用户,POST请求
http://127.0.0.1:8080/user    修改用户,PUT请求
http://127.0.0.1:8080/user    删除用户,DELETE请求

你会猛的发现,以前开发如果只用了GET、POST请求方式的话,那么对于增删改查四个常规接口来说,就得把动词放在URL路径上去体现。而如果使用Restful风格的话,URL都是一样的路径,通过请求方式来控制增删改查,就这么一回事其他也没啥,还是那句话,看自己咋开发。没有谁对谁错,能提高开发效率,团队协作顺利才是最重要的。

一定要跟后端对接的时候看清楚接口文档上用的什么请求方式,POST还是GET等等,另外看一下到底是什么数据请求格式 是表单请求,还是json请求等等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/122246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3dmax 建模插件 Rappa Tools 3 笔记

1功能概述: RappaTools3是一个高级工具箱,为在3ds Max中工作的艺术家提供了各种各样的工具。主要的重点是加快工作流程和减少点击量。它提供了各种各样的工具,从选择工具到渲染工具。它可以帮助您完成创建3D艺术作品的整个过程。 它带有3个…

C#,图像二值化(05)——全局阈值的联高自适应算法及其源代码

阈值的选择当然希望智能、简单一些。应该能应付一般的图片。 What is Binarization? Binarization is the process of transforming data features of any entity into vectors of binary numbers to make classifier algorithms more efficient. In a simple example, trans…

优思学院|怎么把DPMO/不良率换算成六西格玛水平?

如何计算西格玛水平? 为了更形像化地说明西格玛水平(Sigma Level),我们设定一个场景作为例子,假设你是一家电力公司,你会如何评估你公司的质量水平呢?你可能会以电网供电时的正常运行时间来衡量…

知识付费海哥:知识变现三剑客

小时候看武侠戏,那些古代剑客,飞檐走壁,神出鬼没,行走江湖,行侠仗义,牛逼的很!心里贼仰慕! 记忆最深的,是剑客们稳、准、狠的绝技剑法,剑起头落,一…

python实现字幕雨效果实现

先看最终实现的效果图: 使用python实现以上字幕雨效果,用到的主要库是pygame; pygame不是内置模块,需要先安装一下: 安装pygame 安装方式推荐有很多种,推荐使用pip; pip 是 Python 的包安装程…

RabbitMQ 订阅模型-路由模式

订阅模型-路由模式,此时生产者发送消息时需要指定 RoutingKey,即路由 Key,Exchange 接收到消息时转发到与 RoutingKey 相匹配的队列中。 在 Direct 模型下: 队列与交换机绑定,不能任意绑定,而要指定一个 Ro…

线上贷款申请违约风险预测大数据模型

通过模型可以得出模型分类准确率,通过客户信用违约风险预测模型,可以实现多渠道预警,形成多角度观察、多方面分析、多渠道传递的工作局面。

Python每日一练 10——for循环

Python每日一练 10——for循环 文章目录Python每日一练 10——for循环一、for循环介绍二、实例一:等差数列前n项和三、实例二:计算阶乘四、实例三:拉马努金法计算圆周率五、实例四:百钱买百鸡一、for循环介绍 for循环一般用于循环…

前端_Vue_9.模板引用、组件基础

文章目录一、模板引用1.1. 访问模板引用1.2. v-for 中的模板引用1.3. 函数模板引用1.4. 组件上的 ref1.5. 小结二、组件基础 ⭐2.1. 定义一个组件2.2. 使用组件2.3. 传递props2.4. 监听事件2.5. 通过插槽(slot)来分配内容2.6. 动态组件2.7. DOM模板解析注…

go 库 Cobra 现代化的命令行框架

go 库 Cobra 现代化的命令行框架 文章目录go 库 Cobra 现代化的命令行框架1. 简介2. 主要功能3. 应用举例4. Cobra 安装5. 使用 Cobra 库创建命令5.1 创建 rootCmd5.2 创建 main.go5.3 添加命令5.4 编译并运行6. 特性6.1 使用标志6.2 非选项参数验证6.3 PreRun and PostRun Hoo…

手绘图说电子元器件-电声转换器件

电声转换器件包括能够将电信号转换为声音的扬声器、耳机、讯响器和蜂鸣器,能够将声音转换为电信号的传声器,能够进行电磁转换的磁头和具有压电效应的晶体等。 扬声器 扬声器俗称喇叭,是一种常用的电声转换器件,其基本作用是将电信号转换为声音,在收音机、录音机、电视机…

Linux | 套接字(socket)编程 | TCP协议讲解 | 通信模型搭建

文章目录TCP模型的特性TCP接口介绍TCP服务器套接字设置TCP客户端套接字设置TCP模型的特性 TCP是属于传输层协议的一种,上篇博客介绍了另一种传输层协议——UDP,关于它们之间的区别,这里再提一下 TCPUDP传输层协议传输层协议有连接无连接可靠…

Word控件Spire.Doc 【评论】教程(3):在C#、VB.NET中从Word文档中提取注释并保存在TXT文件中

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

[Leetcode] 合并两个有序数组、链表

1.合并两个有序数组 原地合并数组,即不使用额外的空间 --> 使用三个指针,从尾部往前处理 题目链接:https://leetcode.cn/problems/merge-sorted-array/ nums1 总长度 mn,自身长度m;nums2 自身长度n, 使…

SSRF渗透与攻防(一)

目录 前言 SSRF是什么 危害(利用方式): SSRF漏洞原理: CURL协议: SSRF常见场景 社会化分享功能: 如何发现SSRF漏洞 工具利用: 如何防御SSRF漏洞 前言 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是…

rocketmq 实战问题汇总

rocketmq 实战过程会遇到这样或者那样的问题,今天我们专门抽出一篇文章来分析一下汇总一下,避免以后踩同样的坑: 1、找不到JDK的问题: 综合分析,是因为JDK安装的目录有空格导致的:Program Files 两个单词之…

电子招标采购系统源码—企业战略布局下的采购寻源

​ 智慧寻源 多策略、多场景寻源,多种看板让寻源过程全程可监控,根据不同采购场景,采取不同寻源策略, 实现采购寻源线上化管控;同时支持公域和私域寻源。 询价比价 全程线上询比价,信息公开透明&#xff0…

CANoe—基于DoIP通过CAPL实现与ECU通信测试

如下连接是在CANoe中基于DoIP通过加载诊断数据库实现CANoe与待测ECU诊断通信: CANoe链接 本文继续此话题,通过一个简单的CAPL Demo,实现CANoe与ECU进行DoIP通信。 首先在CANoe新建Ethernet工程: 在CANoe “Simulation Setup”中新建CAPL Test Module: 在此例中采用CANo…

DHCP原理和实验

目录 DHCP基本认识和原理 场景一、同网段DHCP 场景二、不同段DHCP(中继DHCP) DHCP基本认识和原理 DHCP(Dynamic Host Configuration Protocol动态主机协议)。 作用:为局域网络中主机动态分发地址,以及…

C#里使用ExcelDataReader读取EXCEL文件的简单方法

C#里使用ExcelDataReader读取EXCEL文件的简单方法 读取EXCEL文件是比较常见的需求,所以在C#里也会经常遇到。 比如客户需要保存的条码数据,他们可以使用EXCEL来扫码进去,并且进行修改和核验, 然后软件就需要读取这些EXCEL文件,并且从这里得到所需要的条码。 要从EXCEL里…