通信 / HTTP / 什么是 REST 接口

一、答案

一种使用 HTTP 协议的规范,用 URL 定位资源,用 HTTP 描述操作 。

本质来讲,就是客户端通过 HTTP 协议,向服务器发送请求,服务器做出响应,通过 HTTP 向客户端返回数据。从理念上讲知道输入,知道输出,但是不清楚内部操作,故称为“接口”。

二、诞生原因

转自:https://blog.csdn.net/weixin_38087538/article/details/82838762

既然用普通的 HTTP 协议即可实现的功能,为什么要称为 REST 接口呢?实际上 REST 接口是在 HTTP 协议基础上,定义了一种适用于当前前后端分离的 HTTP 协议使用规范。没有该规范之前,前后端分离时面临的问题如下:

  1.  很多人在错误的使用 http 协议定义接口,比如各种各样的命名,什么 getUserInfoById, deleteById 之类的、有状态和无状态请求混用。
  2.  对于 http 协议本身提供的规则并没有很好的利用。

所以,为了更好的解决这些问题,干脆就定义一套规范,这套规则并没有引入新的东西,无非就是对 http 协议本身的使用做了一些约束,比如说

  1.  REST 是面向资源,每一个 URI 代表一个资源。
  2.  强调无状态化,服务器端不能存储来自某个客户的某个请求中的信息,并在该客户的其他请求中使用。
  3.  强调 URL 暴露资源时,不要在 URI 中出现动词。
  4.  合理的利用 http 状态码、请求方法。

三、详细说明

转自:https://www.cnblogs.com/Sandy-1128/p/REST-SANDY-0413.html

知乎大神 Ivony 有句话说的好:

URL 定位资源,用 HTTP 动词(GET、POST、DELETE、PUT)描述操作。

咱们不解释 REST 是哪几个单词的首字母,说了也不知道,翻译成中文就是表现层状态转移,我是弄不懂。

在设计 web 接口的时候,REST 主要是用于定义接口名,接口名一般是用名次写,不用动词,那怎么表达“获取”或者“删除”或者“更新”这样的操作呢 ? 用请求类型来区分。

比如,我们有一个 friends 接口,对于“朋友”我们有增删改查四种操作,怎么定义REST接口?

  1. 增加一个朋友,uri: generalcode.cn/v1/friends 接口类型:POST

  2. 删除一个朋友,uri: generalcode.cn/va/friends 接口类型:DELETE

  3. 修改一个朋友,uri: generalcode.cn/va/friends 接口类型:PUT

  4. 查找朋友,uri: generalcode.cn/va/friends 接口类型:GET

上面我们定义的四个接口就是符合 REST 协议的,请注意,这几个接口都没有动词,只有名词 friends,都是通过 Http 请求的接口类型来判断是什么业务操作。

举个反例:generalcode.cn/ va / deleteFriends 该接口用来表示删除朋友,这就是不符合 REST 协议的接口。

一般接口的返回值是 JSON 或者 XML 类型的,大多是 JSON 格式。

用 HTTP Status Code 传递 Server 的状态信息。比如最常用的 200 表示成功,500 表示 Server 内部错误,403 表示 Bad Request 等。(反例:传统web开发返回的状态码一律都是200,其实不可取。)

那这种风格的接口有什么好处呢?前后端分离。前端拿到数据只负责展示和渲染,不对数据做任何处理。后端处理数据并以 JSON 格式传输出去,定义这样一套统一的接口,在 web,ios,android 三端都可以用相同的接口,是不是很爽?!

 

(SAW:Game Over!)

REST(Representational State Transfer)是一种软件架构风格,用于构建分布式系统。它是一种基于网络的设计原则,强调在系统中以资源为中心进行通信和交互。RESTful是符合REST原则的应用程序设计风格。 RESTful的主要原则包括: 1. 资源:在RESTful架构中,所有的数据和功能都被视为资源。每个资源都有一个唯一的标识符(URI)来访问和操作。 2. 统一接口RESTful架构使用统一的接口风格,包括使用HTTP方法(GET、POST、PUT、DELETE等)对资源进行操作,以及使用HTTP状态码来表示请求的结果。 3. 无状态:RESTful架构是无状态的,即服务器不会存储客户端的状态信息。每个请求都应该包含足够的信息来处理请求,服务器不需要维护会话状态。 4. 可缓存:RESTful架构支持对响应进行缓存,以提高性能和减少网络流量。 REST/RESTful的用途包括: 1. Web服务:RESTful架构被广泛用于构建Web服务,通过HTTP协议进行通信,并使用JSON、XML等格式来表示数据。 2. API设计:将应用程序功能以RESTful的方式暴露为API接口,使得其他应用程序可以通过HTTP请求进行访问和集成。 3. 分布式系统:RESTful架构适用于构建分布式系统,通过资源的唯一标识符和HTTP方法进行通信和交互。 4. 轻量级通信:由于RESTful使用HTTP协议作为通信协议,它具有轻量级、简单和易于实现的特点,适用于各种场景的通信需求。 总而言之,REST/RESTful是一种基于网络的软件架构风格,强调以资源为中心进行通信和交互。它具有简单、可扩展和可维护的特点,适用于构建Web服务、API设计以及分布式系统等场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值