前言
今天在对接一个接口时,客户将DELETED请求设置了body参数,导致一个功能反复搞了半天,今天就来说下这两者的区别。
1、HTTP概述
HTTP(HyperText Transfer Protocol)是一种用于从WWW(万维网)服务器传输超文本到本地浏览器的传输协议。它使得浏览器可以更加高效地工作,同时减少网络传输量。HTTP采用了请求/响应模型,客户端向服务器发送一个请求,服务器返回相应的响应。这种通信过程包括以下几个关键环节:
请求消息(Request Message):由请求行、请求头、空行和消息体组成。请求行包括HTTP方法、URL和HTTP版本。
响应消息(Response Message):由状态行、响应头、空行和响应体组成。状态行包括HTTP版本、状态码和原因短语。
常见的HTTP方法包括:
GET:用于请求资源
POST:用于提交数据
PUT:用于更新资源
DELETE:用于删除资源
HTTP是无状态的协议,即每个请求都是独立的,服务器不会保存任何请求的状态信息。
2、RESTful概述
RESTful(Representational State Transfer)是一种软件架构风格,主要用于设计网络应用的API。它基于以下几个原则:
资源(Resources):RESTful以资源为中心,资源通过URI(统一资源标识符)进行标识。
统一接口(Uniform Interface):RESTful API通过一组标准的HTTP方法(GET、POST、PUT、DELETE)对资源进行操作。
无状态(Stateless):每个请求都包含了处理该请求所需的全部信息,服务器不会在请求之间保存任何状态。
缓存(Cacheable):响应应该明确标记为可缓存或不可缓存,以提高客户端的效率。
RESTful设计风格使得API更具一致性和可维护性,同时利用HTTP协议的标准特性来简化网络应用的开发。
3、HTTP与RESTful的主要区别
URL表达形式不同:
请求方法不同:
数据传输格式不同:
资源定义不同:
4、详细对比分析
4.1请求方法
HTTP接口调用可以使用各种HTTP方法,而RESTful严格限定了方法的使用场景。例如,GET方法仅用于获取资源,POST方法用于创建资源,PUT方法用于更新资源,DELETE方法用于删除资源。这种规范化的设计提高了API的清晰度和一致性。
需要特别指出的是,在标准的请求中,GET和DELETE方法是不能往body里面传参数的。这是因为GET方法主要用于请求资源,而不是发送数据,DELETE方法用于删除资源,因此也不需要在body中传递参数。
4.2 数据传输格式
HTTP接口调用的数据格式可以是form、json、xml等多种形式,而RESTful更倾向于使用JSON或XML。这种统一的数据格式使得客户端和服务器之间的数据交换更为一致和高效。
4.3 资源定义
HTTP接口调用不依赖于具体的资源定义,而RESTful强调资源和API请求的对应关系。每个资源在RESTful API中都有一个唯一的URI,通过标准的HTTP方法对这些资源进行操作,使得API设计更加直观和结构化。
5、其他特点
5.1 资源标准化
RESTful是基于HTTP协议的,HTTP协议定义的URL必须符合URI(Uniform Resource Identifier)标准。URI由协议、主机、资源路径、查询字符串和片段组成。因此,RESTful要求每个资源都有一个唯一的标识符URI,这使得资源的管理更加标准化和系统化。
5.2 无状态
因为HTTP是一种无状态协议,所以RESTful也是无状态的。即服务器不会保存任何客户端请求的历史信息。每个请求都是独立的,服务器不会在请求之间保留会话状态。这种无状态性简化了服务器的设计,同时也增强了系统的可扩展性和可靠性。
5.3 缓存机制
由于RESTful是基于HTTP标准定义的,因此具有HTTP缓存机制。客户端可以在收到数据后将其存储在本地缓存中,在下一次请求相同资源时可以减少网络传输,提高性能。这种缓存机制可以显著提高应用的响应速度和用户体验。
5.4 GET和DELETE请求的限制
在标准的HTTP请求中,GET和DELETE方法是不能往body里面传参数的。GET方法主要用于请求资源,而不是发送数据,DELETE方法用于删除资源,因此这两种方法都不需要在body中传递参数。GET请求的参数通常附加在URL中,而DELETE请求通常只需要URI来标识需要删除的资源。那么有标准就有魔改,有些依赖包就会提供,但是这是一个不好的习惯,还是建议大家你不要这么玩
6、总结
RESTful是HTTP接口调用的一种特殊实现,遵循REST架构风格的规范,能够提供更加标准化、统一化、可读性和易用性的API设计。与传统的HTTP接口调用相比,RESTful调用具有更加清晰明了、易于理解和维护的API设计,扩展性和灵活性也更强。在现代Web应用开发中,理解和使用RESTful架构风格能够大大提高开发效率和应用的可维护性。
更多介绍:
1、什么是RestfulAPI?
1、REST直接翻译:表现层状态转移,实质就是一种面向资源编程的方法
2、REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口)
3、RestfulAPI中认为网络上所有的东西都是一种资源,对这些资源操作时无非就是增删改查
4、网络上的资源一般都用一段url代替,比如:http://www.chnsys.com/asset 代替资产资源
5、根据发送请求的method方法判断如何操作这些资源
GET(SELECT): 从服务器取出资源(一项或多项)。
POST(CREATE): 在服务器新建一个资源。
PUT(UPDATE): 在服务器更新资源(客户端提供改变后的完整资源)。
DELETE(DELETE): 从服务器删除资源。
PATCH(UPDATE): 在服务器更新资源(客户端提供改变的属性)。
2、HTTP的第一行包含三个信息:谓词、URL、HTTP协议版本,三个数据使用空格隔开。
POST http://comet.chouti.com/comet/connect HTTP/1.1
2.1、谓词(POST)
1. WEB API就是使用谓词作为默认的路由方式,最常用的谓词有:POST\DELETE\PUT\GET,这四个谓词对应了“增、删、改、查”四个动作
2. 其中,GET,DELETE不包含BODY,PUT,POST可以包含BODY
2.2、URl
1. 网络上的资源一般都用一段url代替,比如:http://www.chnsys.com/asset 代替资产资源
2.3、HTTP协议版本
1. HTTP的第一行内容就是这些: POST http://comet.chouti.com/comet/connect HTTP/1.1
2. 接下来会有一个\r\n来进行换行,接下来就是HTTP HEAD部分,HTTP HEAD描述了HTTP请求和响应。
3. HTTP HEAD即为HTTP协议中最重要的部分,他包含了编码、BODY长度、内容协商等信息,你也可以包含一些自定义信息
3、RestFul API中常用的HEAD信息
1. User-Agent:用户代理,是什么客户端发出的请求,如IE、Chrome、Fiddler等
2. HOST:域名
3. Authorization:验证信息
4. Accept:接受何种序列化方式返回的数据,用MIME表示,用于对响应数据的内容协商,
可以包含多个MIME,按优先顺序排列,如application/json,application/xml,text/html
5. Content-Type:使用一个MIME表示,表示所发送请求的Body的序列化方式,常见的如application/json,
还有WEB交互最常使用的application/x-www-form-urlencoded,都表示了你的body部分的序列化方式,在请求、响应中都会出现
6. HTTP HEAD部分是HTTP协议中最核心的部分,可配置向非常多这里就不列举了
7. 响应部分也分为头部和Body,响应头部和请求头部最大的不同在于响应首行存在一个HTTP Code
HTTP Code作为API的调用状态的展示,也很重要,在REST API中最常用的状态码一般为2XX,4XX,5XX三个段
8. 在首部之后有一个空行(\r\n)接下来就是Content,这里有具体的业务数据,根据不同的Content-Type使用不同的序列化方式表示,例如JSON,XML,甚至HTML
4、用一张图为大家展示一下这些知识
该文章在 2024/8/26 16:04:33 编辑过