如何按照RESTful规范编写API

API 接口应该如何写?API 跟 URL 有什么不同?这绝对是不可以被忽略的问题,如果 API 写得乱七八糟,很有可能会失去负责前端开发的同事的信任。将 API 写得“高大上”,也是一名开发者工匠精神的一种体现。下面来介绍如何写 API。

(1)如果是对同一个表进行数据操作(增、删、改、查),应该使用一条API,然后根据 method 的不同,进行不同的操作。

GET/POST/PUT/DELETE/PATCH

(2) 面向资源编程,通过API提交的参数最好是名词,比如 name,尽量少用动词。

http://www.abc.com/name

(3) 体现版本,在API中加入像 v1、v2 这样的版本代号:

http://www.abc.com/v1/name
http://www.abc.com/v2/name

(4) 体现 API,让使用者一眼能看出这是 API 而不是 URL,应该在 API 中加入提示:

http://www.abc.comlapi/v1/namehttp://www.abc.com/api/v2/name

(5) 使用 HTTPS,这一项原本是为了安全考虑,但是随着国内外互联网环境对安全性越来越重视,谷歌浏览器对所有不是 HTTPS 请求的链接全都会提示用户此链接为不安全链接,腾讯等平台也对小程序等产品强制要求使用HTTPS 协议。

不过,好在国内许多提供云服务的公司,像腾讯云、阿里云等,都提供免费的 SSL 证书,供开发者去申请。

https://www.abc.com/api/v1/namehttps://www.abc.com/api/v2/name

(6) 响应式设置状态码,例如,200 和 201 代表操作成功,403 代表权限不够,404代表没有指定资源,500 代表运行时发现代码逻辑错误等。

return HtpResponse('adgbag,status=300)

(7) API 的参数中加入筛选条件参数,也可以理解为获取资源优先选择 GET 的方式。

https://www.abc.com/apilv2/name?page=1&size=10

(8) 返回值的规范,不同的 method 操作成功后,后端应该响应的返回值如下:

https://www.abc.com/apilv1/name

不同的提交方式代表对数据进行不同的操作:

  • GET:所有列表。
  • POST:新增的数据。
https://www.abc.comlapilv1/name/1
  • GET:单条数据。
  • PUT:更新,返回更新的数据。
  • PATCH:局部更新,返回更新的数据。
  • DELETE:删除,返回空文档。

(9) 返回错误信息,应该加入错误代号 code,让用户能直接看出是哪种类型的错误。

ret {
code:1000,data:{
{ 'id": 1,'title":lala}}

(10) 返回的详细信息,应该以字典的形式放在 data 中。

ret {
code:1000,data:{
{ 'id': 1,'title":"ala','detail':http://www....}}

RESTful 规范是业内约定俗成的规范,并不是技术上定义的公式,在实际生产使用中,大家还是要根据业务灵活运用。

© 版权声明
THE END
喜欢就支持一下吧
点赞3赞赏
分享
评论 抢沙发
HarryPotter的头像|艾奇编程网

昵称

取消
昵称表情