RestfulAPI设计风格简介

243 阅读4分钟
RESTful(表现层状态转换)


D:是一种开发理念,是设计风格而非标准


表现层
:所表现的对象也就是资源,客户端访问服务器所获取的就是资源,例如html,txt,json,图片等等,资源表现的形式很多种,


例如图片可jpg,也可png,客户端通过http请求头accept,Content-Type字段指定相应的资源表现形式


状态转换
:指客户端和服务器互动过程,势必涉及数据和状态的变化。由于http是无状态的,客户端通过HTTP动词去操作服务器的资源,


G
ET用于获取资源,POST用于新建资源,PUT用于更新资源,DElETE用于删除资源


总结:每一个URL代表一种资源,客户端和服务器之间传递这种资源的某种表现层,客户端通过4个http动词对服务器资源进行操作。



RESTful设计方法


1.域名:
把api部署域名之下


2.版本Version
:可放url可放请求头部


3.路径Endpoint
:表示API的具体网址,每个网址代表一种资源


①只能名词,不能动词,一般对应数据库表名 ②名词应复数


4.HTTP动词
:常用G
ET,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)- 服务端当前无法处理请求

更多免费技术资料可关注:annalin1203