RESTful Web Service的设计和实现

172 阅读1分钟

HttpVerbs: get/put/patch/post/delete
——>Hypermedia Controls超媒体驱动服务(HATEOAS)

RESTful实现

  • 识别资源
  • 考虑资源粒度
  • 设计uri: uri+method组合的功能
  • 选择合适的http method和status code
  • 设计资源的表述(json or xml or web页面)

Http方法的安全性和幂等性

幂等性/Idempotency:对于多次的同一个请求,返回的结果是相同的,例如post方法就不是幂等的,对于反复执行的同一个请求,每一次都会创建一个新资源。上游disableAutomaticRetries()禁止自动重传+下游设计幂等方法,对于幂等方法在请求失败后,可以放心地多次请求
注意:

  • put是全局更新,前端要提供一个完整的资源对象,例如更新整个UserInfo,是幂等的——update an entire resource
  • patch是局部更新,后端只更新接收到的字段,例如可以只更新UserInfo中的userName,但不是幂等的——a partial update

URI+http method的组合含义

Http Status Code

2xx成功 200 ok 201 created 202 accepted
3xx重定向 301 moved permanently redirect/forward 302 临时重定向

HATEOAS

  • Hypermedia As the engine of Application State
  • 把超媒体作为应用状态的引擎
  • REST统一接口的必要组成部分,REST做到极致,一定需要实现HYTEOAS
  • HATEOAS无需事先约定如何访问服务(地址和格式,content-type等),可以通过访问的根路径/目录来获取最初的资源uri列表,通过这个目录查找对应所需要的资源,以及相关操作的链接
  • 超链接中会提供服务所需的各种REST接口信息
  • link-relations常用的超链接类型如表所示