RESTful API架构风格

REST既不是标准,也不是协议,而是一组架构约束条件和设计指导原则,一种基于HTTP、URI、XML 等现有协议与标准的开发方式。REST是Representational State Transfer的缩写,直译为“表现层状态转移”。一个最简单的实现条件,就是用url来定位资源,用HTTP请求的类型(get/put/patch/delete/post)来描述操作。
举个例子:
常用的资源操作类型,即http请求方式(括号中是对应的SQL命令)

  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
  • DELETE(DELETE):从服务器删除资源。
    传统风格的API可能会这样设计
url: api/getProductList       type: post/get 
url: api/setProductList       type: post/get
url: api/updateProductList    type: post/get

符合RESTful风格的API则会如下:

url: api/productList          type: get       获取产品列表
url: api/productList          type: post      新建产品列表
url: api/productList/id       type: get       获取某个产品信息
url: api/productList/id       type: put       更新某个产品信息
url: api/productList/id       type: patch     更新某个产品的部分信息
url: api/productList/id       type: delete    删除某个产品

统一接口是REST区别于其他架构风格的核心特征,简单总结就是:URL中的路径(endpoint)不能有动词,只能用名词。用HTTP方法对资源进行增删改查的操作。
另外,RESTful约束服务端应向用户返回规范的状态码和提示信息。
常见的如:

  • 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 - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
    除了上述两点之外,RESTful的约束条件还有无状态、可缓存、分层系统等,能有效提高接口可移植性、前后端开发分离、降低架构层级之间的耦合性、提升开发人员工作效率和系统运行效率。

你可能感兴趣的:(RESTful API架构风格)