一、RESTful是个啥?

  RESTful是一种软件架构风格、设计风格,只是提供了一组设计原则和约束条件。

二、对比传统方式

  RESTful风格和传统方式主要体现在URI和请求方法上。


传统方式

RESTful风格

查询

GET    /user/query?name=zhangsan

GET    /user?name=zhangsan

详情

GET    /user/getInfo?id=1

GET    /user/1

创建

POST    /user/create

POST    /user

修改

POST    /user/update

PUT    /user/1

删除

GET    /user/delete?id=1

DELETE    /user/1


  1、用URI描述资源。

  2、使用HTTP方法描述行为。使用HTTP状态码来表示不同的结果。

  3、使用json作为数据交互格式。


GET,DELETE,PUT和POST的典型用法:

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)- 服务端当前无法处理请求

三、REST成熟度模型

  原文​https://martinfowler.com/articles/richardsonMaturityModel.html​

    对RESTful的理解_负载均衡

  将REST成熟度从低到高分为4级(level0-level3):

  1、Level 0:使用http作为传输方式。

  2、Level 1:引入资源概念,每个资源都有对应的URI。

  3、使用HTTP方法进行不同的操作,使用HTTP状态码来表示不同的结果。

  4、使用超媒体。在资源的表达中包含了连接信息。

一般情况下,达成Level2就可以了。