RESTful架构:python
(1)每个URI表明一种资源;数据库
(2)客户端和服务器之间,传递这种资源的某种表现层;json
(3)客户端经过四个HTTP动词,对服务器端资源进行操做,实现"表现层状态转化"。api
10个注意的设计规范:跨域
1.API与用户的通信协议,老是用HTTPs协议数组
2.域名服务器
3.版本架构
url 如:https://api.example.com/v1/ 应该将API的版本号放在url的后面app
请求头 跨域时引起屡次请求异步
4.路径(接口命名)
路径又称"终点"(endpoint)
在RESTful架构中,每一个网址表明一种资源(resource),因此网址中不能有动词,只能有名词,并且所用的名词每每与数据库的表格名对应。
通常来讲,数据库中的表都是同种记录的"集合"(collection),因此API中的名词也应该使用复数。
5.method 方式
6.过滤信息(Filtering)
经过在url上传参的形式传递搜索条件
7.状态码(Status Codes)
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 - [*]:服务器发生错误,用户将没法判断发出的请求是否成功。
8.错误信息
应该返回错误信息,error看成key
{
error : " 哪里错误"
}
9.返回结果,针对不一样操做,服务器向用户返回的结果应该符合如下规范:
GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档
10.Hypermedia API,RESTful API最好作到Hypermedia,即返回结果中提供连接,连向其余API方法,使得用户不查文档,也知道下一步应该作什么。
{
"link"
: {
"rel"
:
"collection https://www.example.com/zoos"
,
"href"
:
"https://api.example.com/zoos"
,
"title"
:
"List of zoos"
,
"type"
:
"application/vnd.yourformat+json"
}}