深入理解RESTful API
现在这个时代手机已经离不开我们的生活,现在不管是手机端PC端都分为前端后端,目前大环境基本上都是前后端分离,那么就要涉及到这个信息通信.因此就必须要有一套统一的机制,方便不同的前后端进行信息交互.那么RESTful API就是目前比较流行的一套api设计模式
API设计的一些细节
一:协议
开发过程一般都是http(s)协议
二:域名
尽量将API项目部署在专有域名下
api.test.com
三:版本号放入url
api.test.com/v1
四:HTTP动词
比较常用的有5个
GET(select) 从服务器取出资源(一个或多个)
POST(create) 在服务器新建资源
PUT(update) 在服务器更新资源(客户端提供改变后的完整资源)
PATCH(update) 在服务器更新资源(客户端提供改变的属性)
DELETE(delete) 在服务器删除资源
两个不常用的
HEAD 获取资源的元数据
OPTIONS 获取信息,关于资源的哪些属性是客户端可以改变的
下面是一些例子
GET /zoos:列出所有动物园
POST /zoos:新建一个动物园
GET /zoos/ID:获取某个指定动物园的信息
PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
DELETE /zoos/ID:删除某个动物园
GET /zoos/ID/animals:列出某个指定动物园的所有动物
DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物
五:过滤信息(Filtering)
如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果
下面是一些常见的参数。
?limit=10:指定返回记录的数量
?offset=10:指定返回记录的开始位置。
?page=2&per_page=100:指定第几页,以及每页的记录数。
?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
?animal_type_id=1:指定筛选条件
参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals 与 GET /animals?zoo_id=ID 的含义是相同的。
六:状态码(code)
服务器向前端返回的状态信息200,400,500 (各个公司都应该有一套自己定义的返回code)
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 - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
更多返回码请转移阵地
公司用的TP5所以写了个简单的demo
- 版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。
- 本文网址:https://www.liaotaoo.cn/261.html
- 上篇文章:thinkphp5 RESTful API使用示例demo
- 下篇文章:emlog代码高亮