REST的英文全称
Representation State Transfer : 直译为表现层状态转移.
是通过HTTP协议来描述Web API的约定风格.
什么是服务?
任何业务服务都可以抽象为对象的状态维护,基本操作就増删查改四种.
例如:
- 访问文章的,很明显就是对文章及其列表的增删查改,文章是被做操的对象,通过增删查改修改文章的状态.
- 银行转账,好像是有逻辑行为,但实际上每个转账事务,可以理解为对一个账单对象的状态操作,这个账单又关联了多个账户的状态.
- 现实生活中一个人走路,是一个明显的对象行为,也可以表示为人这个对象从位置A经过时间T后变为位置B的状态更新操作.
服务端无论使用何种架构,加入缓存,队列,数据库,最终的目标就是维护资源的状态.
从客户端的视角来看,服务端API描述的内容就是其维护的对象的瞬时状态的表现.
为什么是RESTful
服务端面向Web的API需要通过HTTP协议来表达.了解一下REST的起源可以知道其作者是HTTP协议的制定者,所以HTTP协议的语义元素天然符合REST的约束要求.
但RESTful并不是强制的,Web API不必遵循RESTful,但是遵循RESTful可以令API表达的语义更简单清晰统一,在语义全部抽象为转台转移后,分布式系统的架构关注点(维护状态一致)也会更明确.
RESTful的初级内容
- 使用METHOD (POST,DELETE,GET,PUT) 等动词表示増删查改四种操作.
- 使用URI(通常是其子集URL)来表示对象或资源.
- 使用queryString表示查询输入
- 使用body表示更新和保存的状态输入
- 使用HEAD进行扩展
例如:
- 查询名为REST的文章 ->
GET http://host:port/article/REST
- 从账户A转账50元到转户B ->
POST http://host:port/transaction
body:{"from":"A","to":"B","amount":50}
- 让一个名为Mike的人步行一分钟 ->
PUT http://host:port/human/mike
body:{"time":1,"unit":"minite"}
补充阅读
阮一峰写的这篇文章理解RESTful架构详尽易懂,请读者一定要阅读,本文不想重复其内容所 以仅仅作为理解向导存在.