什么是RESTful API
-
restful是一套编写接口的协议,协议规定如何编写以及如何设置返回值、状态码等信息
-
特点:
- restful:给用户一个url,根据method不同在后端做不同的处理,比如:post 创建数据、get获取数据、put和patch修改数据、delete删除数据
- no rest: 给调用者很多url,每个url代表一个功能,比如:add_user/delte_user/edit_user/
-
版本,来控制让程序有多个版本共存的情况,版本可以放在 url、请求头(accept/自定义)、GET参数
-
状态码,200/300/400/500
-
url中尽量使用名词,restful也可以称为“面向资源编程”
-
api标示:api.luffycity.com
你的restful是怎么学的?
- 因为之前公司要写这样项目
- 接口
- 公司要做前后端分离的项目
- 公司要做微信小程序的开发
- 所以就开始学习restful规范,看的技术文章 阮一峰的博客学到的规范
你知道RESTful API吗?他的优点和缺点是啥?有没有替换方案?
- 早期Web是通过服务端生成页面的,Web间的数据传输比较简单,后来,随着企业业务的不断发展,出现了WebService技术
- 早期的WebService技术异常繁琐,基本都是使用XML,基于SOAP协议进行通讯
- 随着WebService技术的发展,有一种WebService技术,受到了大家的喜爱,他就是RESTful API WebService
- REST包含三要求,即资源(Resources)、表现层(Representation)、状态转化(State Transfer)
- 资源:就是一个网络上的实体,一个链接,一个图片,一个视频,任务网络上的东西,都可以确定为一个资源,URI就是它的地址
- 表现层:把资源具体展现中的形式,就叫表现层,比如文本使用txt、html、xml、json格式表现,图片使用jpg、gif、png格式表现
- 状态转化:通过操作,使得客户端和服务端对某个资源在表现层上展现出来的不同状态,叫状态转化,而操作的手段,只能是通过HTTP协议,比如用GET、POST、PUT、DELETE请求状态
完整的RESTful API组成和定义
- 协议:一般是指HTTP或HTTPS协议
- 域名:https://www.google.com
- 版本号:google.com/v1/
- 路径:google.com/v1/persons
- 操作:GET、POST、PUT、PATCH、DELETE等
- 过滤:?KaTeX parse error: Expected 'EOF', got '&' at position 8: limit=3&̲offset=10&$page=1
- 状态码:
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
- 返回结果
缺点
- 过多的接口,就导致接口爆炸,过少的接口,就导致信息臃肿
- 前端在请求数据时,其实有时候,需要多个资源的集合,有时候又不需要单个资源的所有数据,前端希望能根据我的请求,返回特定的资源数,这时候,RESTful API明显就力不从心了
优点
- 非常好用、简单且强大,它把任何当成一个资源,非常适合微服务提供的请求返回