理解RESTful与API设计指南

2019-11-25  本文已影响0人  錦魚

总览 RESTful

起源

REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。Fielding是一个非常重要的人,他是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所以,他的这篇论文一经发表,就引起了关注,并且立即对互联网开发产生了深远的影响。

名称
综上所述,什么是RESTful架构:

Restful API设计指南

1. 协议
2. 域名

例: https: //api.example.com

例: https: //example.org/api/

3. 版本

例: https: //api.example.com/v1/

或将版本号放在HTTP头信息中,但不如放入URL方便和直观。

4. 路径

路径又称"终点"(endpoint),表示API的具体网址。

在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库
中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数。

例:
https: //api.example.com/v1/zoos
https: //api.example.com/v1/animals
https: //api.example.com/v1/employees

5. HTTP动词
6. 过滤信息(Filtering)

如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。

7. 状态码(Status Codes)

状态码的完全列表参见这里

8. 错误处理(Error handling)

如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

{
    error: "Invalid API key"
}
9. 返回结果

针对不同操作,服务器向用户返回的结果应该符合以下规范。

GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档
10. Hypermedia API

RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。

11. 其他

(1)API的身份认证应该使用OAuth 2.0框架。

(2)服务器返回的数据格式,应该尽量使用JSON,避免使用XML。

参考至:https://www.cnblogs.com/alex3714/articles/6808013.html

上一篇 下一篇

猜你喜欢

热点阅读