如何理解RESTful API

REST的英文全称

Representation State Transfer : 直译为表现层状态转移.

是通过HTTP协议来描述Web API的约定风格.

什么是服务?

任何业务服务都可以抽象为对象的状态维护,基本操作就増删查改四种.

例如:

  1. 访问文章的,很明显就是对文章及其列表的增删查改,文章是被做操的对象,通过增删查改修改文章的状态.
  2. 银行转账,好像是有逻辑行为,但实际上每个转账事务,可以理解为对一个账单对象的状态操作,这个账单又关联了多个账户的状态.
  3. 现实生活中一个人走路,是一个明显的对象行为,也可以表示为人这个对象从位置A经过时间T后变为位置B的状态更新操作.

服务端无论使用何种架构,加入缓存,队列,数据库,最终的目标就是维护资源的状态.

从客户端的视角来看,服务端API描述的内容就是其维护的对象的瞬时状态的表现.

为什么是RESTful

服务端面向Web的API需要通过HTTP协议来表达.了解一下REST的起源可以知道其作者是HTTP协议的制定者,所以HTTP协议的语义元素天然符合REST的约束要求.

但RESTful并不是强制的,Web API不必遵循RESTful,但是遵循RESTful可以令API表达的语义更简单清晰统一,在语义全部抽象为转台转移后,分布式系统的架构关注点(维护状态一致)也会更明确.

RESTful的初级内容

  1. 使用METHOD (POST,DELETE,GET,PUT) 等动词表示増删查改四种操作.
  2. 使用URI(通常是其子集URL)来表示对象或资源.
  3. 使用queryString表示查询输入
  4. 使用body表示更新和保存的状态输入
  5. 使用HEAD进行扩展

例如:

  1. 查询名为REST的文章 -> GET http://host:port/article/REST
  2. 从账户A转账50元到转户B -> POST http://host:port/transaction body: {"from":"A","to":"B","amount":50}
  3. 让一个名为Mike的人步行一分钟 -> PUT http://host:port/human/mike body: {"time":1,"unit":"minite"}

补充阅读

阮一峰写的这篇文章理解RESTful架构详尽易懂,请读者一定要阅读,本文不想重复其内容所 以仅仅作为理解向导存在.

猜你喜欢

转载自blog.csdn.net/u012631045/article/details/79701225