通信 / 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!)


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部