restful规范

什么是restful

首先restful是一种软件架构风格或者说是一种设计风格,并不是标准,它只是提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。

就像设计模式一样,并不是一定要遵循这些原则,而是基于这个风格设计的软件可以更简洁,更有层次,我们可以根据开发的实际情况,做相应的改变。

 

restful设计规范如下:

一、协议

在url接口中推荐使用Https协议,让网络接口更加安全(Https是Http的安全版,SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL(安全套接层协议))

 

二、域名

应该尽量将API部署到专用域名之下(存在跨域问题),例如 https://api.cnblogs.com

可以放在主域名之下,例如 https://www.cnblogs.com/api/

 

三、版本

可以将版本号放在HTTP头信息中或放入URL中,例如 https://https://www.cnblogs.com/api/v1/

 

四、路径

restful 提倡面向资源编程,所以在url接口中尽量要使用名词,不要使用动词

例如 https://www.cnblogs.com/news/

 

五、HTTP动词

可以根据Http不同的method,进行不同的资源操作

  • GET:从服务器取出资源(一项或多项)。
  • POST:在服务器新建一个资源。
  • PUT:在服务器更新资源(客户端提供改变后的完整资源)。
  • PATCH:在服务器更新资源(客户端提供改变的属性)。
  • DELETE:从服务器删除资源。

 

 

六、过滤信息

如果记录数量很多,服务器不可能都将它们返回给用户,API会提供参数,过滤返回结果,常见的参数有

  • https:www.cnblogs.com/api/v1/?limit=10    指定返回记录的数量
  • https:www.cnblogs.com/api/v1/?offset=10    指定返回记录的开始位置
  • https:www.cnblogs.com/api/v1/?page=3&per_page=20      指定第几页,每页显示多少条记录

 

七、状态码

响应应该包含状态码,常见的状态码如下

  • 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格式)
  • 410Gone -[GET]:用户请求的资源被永久删除,且不会再得到的
  • 422Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误
  • 500INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功



八、错误处理

如果状态码为4xx,就会返回错误信息,一般返回的错误信息中将error作为键名,错误信息作为键值

 

九、返回结果

针对不同操作,服务器向用户返回不同的结果,而且格式应该统一为json格式

 

十、Hypermedia API

返回结果中要提供帮助链接,即API最好做到Hypermedia。使用户不查询文档,也知道下一步应该怎么做

 

posted on 2020-02-24 10:31  syyw  阅读(316)  评论(0编辑  收藏  举报