本帖最后由 杰哥,我就服你 于 2018-11-22 13:14 编辑
RESTful(表现层状态转换)
D:是一种开发理念,是设计风格而非标准
表现层:所表现的对象也就是资源,客户端访问服务器所获取的就是资源,例如html,txt,json,图片等等,资源表现的形式很多种,
例如图片可jpg,也可png,客户端通过http请求头accept,Content-Type字段指定相应的资源表现形式
状态转换:指客户端和服务器互动过程,势必涉及数据和状态的变化。由于http是无状态的,客户端通过HTTP动词去操作服务器的资源,
GET用于获取资源,POST用于新建资源,PUT用于更新资源,DElETE用于删除资源
总结:每一个URL代表一种资源,客户端和服务器之间传递这种资源的某种表现层,客户端通过4个http动词对服务器资源进行操作。
RESTful设计方法
1.域名:把api部署域名之下
2.版本Version:可放url可放请求头部
3.路径Endpoint:表示API的具体网址,每个网址代表一种资源
①只能名词,不能动词,一般对应数据库表名 ②名词应复数
4.HTTP动词:常用GET,POST,PUT,DElETE,不常用PATCH,HEAD,OPTIONS
5.过滤信息:例如limit,offset,page,sort等
6.状态码:例如201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功
7.错误处理:如果出错服务器应向用户返回出错信息。例如{error:‘Invalid API key’}
8.返回结果:如果没出错,根据用户对资源的不同操作应按照规范返回结果。
9.超媒体:返回结果中提供链接,连向其他api方法,给予用户下一步提示
10.其他:服务器返回数据结构尽量使用JSON,避免使用XML
附件:状态码详解
1.GET:安全且幂等,获取表示,变更时获取表示(缓存)200(OK) - 表示已在响应中发出
204(无内容) - 资源有空表示
301(Moved Permanently) - 资源的URI已被更新
303(See Other) - 其他(如,负载均衡)
304(not modified)- 资源未更改(缓存)
400 (bad request)- 指代坏请求(如,参数错误)
404 (not found)- 资源不存在
406 (not acceptable)- 服务端不支持所需表示
500 (internal server error)- 通用错误响应
503 (Service Unavailable)- 服务端当前无法处理请求
POST:不安全且不幂等,使用服务端管理的(自动产生)的实例号创建资源,创建子资源,部分更新资源,如果没有被修改,则不过更新资源(乐观锁)
200(OK)- 如果现有资源已被更改
201(created)- 如果新资源被创建
202(accepted)- 已接受处理请求但尚未完成(异步处理)
301(Moved Permanently)- 资源的URI被更新
303(See Other)- 其他(如,负载均衡)
400(bad request)- 指代坏请求404 (not found)- 资源不存在
406 (not acceptable)- 服务端不支持所需表示
409 (conflict)- 通用冲突
412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
415 (unsupported media type)- 接受到的表示不受支持
500 (internal server error)- 通用错误响应
503 (Service Unavailable)- 服务当前无法处理请求
PUT:不安全但幂等,用客户端管理的实例号创建一个资源,通过替换的方式更新资源,如果未被修改,则更新资源(乐观锁)
200 (OK)- 如果已存在资源被更改
201 (created)- 如果新资源被创建
301(Moved Permanently)- 资源的URI已更改
303 (See Other)- 其他(如,负载均衡)
400 (bad request)- 指代坏请求
404 (not found)- 资源不存在
406 (not acceptable)- 服务端不支持所需表示
409 (conflict)- 通用冲突
412 (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
415 (unsupported media type)- 接受到的表示不受支持
500 (internal server error)- 通用错误响应
503 (Service Unavailable)- 服务当前无法处理请求
DELETE:不安全但幂等,删除资源
200 (OK)- 资源已被删除
301 (Moved Permanently)- 资源的URI已更改
303 (See Other)- 其他,如负载均衡
400 (bad request)- 指代坏请求
404 (not found)- 资源不存在
409 (conflict)- 通用冲突
500 (internal server error)- 通用错误响应
503 (Service Unavailable)- 服务端当前无法处理请求
|
|