云主机安装多个网站,自己做网站卖产品怎么样,the7 wordpress 汉化,长沙品牌设计公司都有哪些RESTful介绍
REST与技术无关#xff0c;代表的是一种软件架构风格#xff0c;REST是Representational State Transfer的简称#xff0c;中文翻译为“表征状态转移”或“表现层状态转化”。阮一峰 理解RESTful架构
RESTful API设计指南
阮一峰 RESTful设计指南
API与用户…RESTful介绍
REST与技术无关代表的是一种软件架构风格REST是Representational State Transfer的简称中文翻译为“表征状态转移”或“表现层状态转化”。阮一峰 理解RESTful架构
RESTful API设计指南
阮一峰 RESTful设计指南
API与用户的通信协议
使用HTTPS协议。
域名
体现是API
https://api.example.comhttps://example.org/api/
版本
体现版本
将版本信息放在URL中如https://api.example.com/v1/将版本信息放在请求头中。
路径
网络上任何东西都是资源均使用名词表示可复数面向资源编程
https://api.example.com/v1/zooshttps://api.example.com/v1/animalshttps://api.example.com/v1/employees
method
根据method不同进行不同操作
GET 从服务器取出资源一项或多项POST 在服务器新建一个资源PUT 在服务器更新资源客户端提供改变后的完整资源PATCH 在服务器更新资源客户端提供改变的属性DELETE 从服务器删除资源
过滤
通过在url上传参的形式传递搜索条件
https://api.example.com/v1/zoos?limit10指定返回记录的数量https://api.example.com/v1/zoos?offset10指定返回记录的开始位置https://api.example.com/v1/zoos?page2per_page100指定第几页以及每页的记录数https://api.example.com/v1/zoos?sortbynameorderasc指定返回结果按照哪个属性排序以及排序顺序https://api.example.com/v1/zoos?animal_type_id1指定筛选条件
状态码
响应式设置状态码
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 - [*]服务器发生错误用户将无法判断发出的请求是否成功。
错误处理
状态码是4xx时应返回错误信息error当做key。 { error: Invalid API key } 返回结果
针对不同操作服务器向用户返回的结果应该符合以下规范
GET /collection返回资源对象的列表数组GET /collection/resource返回单个资源对象获取单条数据POST /collection返回新生成的资源对象返回新增的数据PUT /collection/resource返回完整的资源对象更新PATCH /collection/resource返回完整的资源对象局部更新DELETE /collection/resource返回一个空文档删除
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.yourformatjson }}