龙行博客

走路看风景,经历看人生,岁月留痕迹,人生留轨迹,17的历史,18的豪情,时间的匆忙,人生的风景,放开心胸往前走,成功再远行,放开理想往前走,梦想再行动。
现在位置:首页 > 杂货分享 > 个人随笔 > 深入理解RESTful API

深入理解RESTful API

龙行    个人随笔    2019-6-23    55    0评论    本文已被百度收录点击查看详情

现在这个时代手机已经离不开我们的生活,现在不管是手机端PC端都分为前端后端,目前大环境基本上都是前后端分离,那么就要涉及到这个信息通信.因此就必须要有一套统一的机制,方便不同的前后端进行信息交互.那么RESTful API就是目前比较流行的一套api设计模式

API设计的一些细节


一:协议

开发过程一般都是http(s)协议

二:域名

尽量将API项目部署在专有域名下

api.test.com

三:版本号放入url

api.test.com/v1

四:HTTP动词

比较常用的有5个


  1. GET(select) 从服务器取出资源(一个或多个)

  2. POST(create) 在服务器新建资源

  3. PUT(update) 在服务器更新资源(客户端提供改变后的完整资源)

  4. PATCH(update) 在服务器更新资源(客户端提供改变的属性)

  5. DELETE(delete) 在服务器删除资源


两个不常用的


  1. HEAD  获取资源的元数据

  2. 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

再次转移阵地


评论一下 分享本文 赞助站长

赞助站长X

扫码赞助站长
联系站长
龙行博客
  • 版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。
  • 本文网址:https://www.liaotaoo.cn/261.html
  • 上篇文章:thinkphp5 RESTful API使用示例demo
  • 下篇文章:emlog代码高亮
  • api
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
提交评论

清空信息
关闭评论
快捷导航
联系博主
在线壁纸
给我留言
光羽影视
音乐欣赏
返回顶部