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常用的超链接类型如表所示
