标签:represent postman 从服务器 信息 asc 列表 方法 table http
# 请求工具:postman => https://www.getpostman.com/
# 接口:url链接,通过向链接发生不同的类型请求与数据得到相应的响应数据
域名: 有api关键字出现
-- https://api.example.com (存在跨域问题)
-- https://example.com/api
版本: 不同版本需要标注
-- https://example.com/api/v1 | -- https://example.com/api/1
-- https://example.com/api/v2 | -- https://example.com/api/2
-- 另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观
请求方法: 不同的方法代表不同的操作,从请求方式上决定操作
GET :从服务器取出资源(一项或多项)
POST :在服务器新建一个资源
PUT :在服务器更新资源(客户端提供改变后的完整资源)
PATCH :在服务器更新资源(客户端提供改变的属性)
DELETE :从服务器删除资源
资源过滤 通过接口传递参数(锚参)来过滤资源
-- ?limit=10: 指定返回记录的数量
-- ?offset=10: 指定返回记录的开始位置
-- ?page=2&per_page=100: 指定第几页,以及每页的记录数
-- ?sortby=name&order=asc: 指定返回结果按照哪个属性排序,以及排序顺序
-- ?animal_type_id=1: 指定筛选条件
资源路径 请求的目标数据称之为资源,资源一般都有名词复数表示
路径又称"终点"(endpoint),表示API的具体网址
在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,
而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合"(collection),
所以API中的名词也应该使用复数
-- https://example.com/api/v1/books (之前不规范的案例: /get_books/)
状态码 返回数据要标准状态码,通过在数据中 {"status": 200}
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 - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
错误处理 请求失败需要标注错误信息
{
"message": "请求参数不合法",
}
操作结果 针对不同操作,服务器向用户返回的结果应该符合以下规范
GET /collection: 返回资源对象的列表(数组)
GET /collection/resource: 返回单个资源对象
POST /collection: 返回新生成的资源对象
PUT /collection/resource: 返回完整的资源对象
PATCH /collection/resource: 返回完整的资源对象
DELETE /collection/resource:返回一个空文档
子资源返回资源接口 返回结果中如果有子资源,返回子资源的链接地址
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"
}}
上面代码表示,文档中有一个link属性,用户读取这个属性就知道下一步该调用什么API了。
rel表示这个API与当前网址的关系(collection关系,并给出该collection的网址),=
href表示API的路径,
title表示API的标题,
type表示返回类型。
Hypermedia API的设计被称为HATEOAS。
Github的API就是这种设计,访问api.github.com会得到一个所有可用API的网址列表。
{
"current_user_url": "https://api.github.com/user",
"authorizations_url": "https://api.github.com/authorizations",
// ...
}
从上面可以看到,如果想获取当前用户的信息,应该去访问api.github.com/user,然后就得到了下面结果。
{
"message": "Requires authentication",
"documentation_url": "https://developer.github.com/v3/users/#get-the-authenticated-user",
}
上面代码表示,服务器给出了提示信息,以及文档的网址。
参考文章 理解RESTful架构
标签:represent postman 从服务器 信息 asc 列表 方法 table http
原文地址:https://www.cnblogs.com/shiwei1930/p/11718098.html