REST是以信息(数据)为中心的表述性状态转移(Representational State Transfer REST)已成为替代传统的SOAP Web服务的流行方案。SOAP的用武之地一般会关注行为和处理,而REST关注的是要处理的数据。
理解REST也可以从英文全称去逐个理解:
表述性(Representational): REST资源可以由很多形式来表述/描述,其中包括XML、JSON(JavaScript Object Notation)甚至HTML。
状态(State): 当使用REST的时候,强调资源的状态而不是对资源采取的行为。
转移(Transfer): 转移资源数据,简单理解就是把资源以某种表述形式从一个应用转移到另一个应用。
在REST中,资源的识别和定位是通过URL来完成的,有一种常见的错误理解是"REST是一种基于URL的Web服务 ,是一种远程过程调用(remote procedure call , RPC)机制中的一种类型 " 实际上REST和RPC没有任何关系,RPC是面向服务的,并关注行为和动作。
REST中也有行为,这些行为是通过HTTP方法(GET POST PUT DELETE PATCH等)来定义的,可以匹配CRUD动作:
Create: POST
Read: GET
Update: PUT或PATCH
Delete: DELETE
尽管有这些简单的映射,但是这并不是严格的限制。 有时候PUT可以用来创建新资源,POST请求由于本身具有非幂等性(non-idempotent)的特点使其成为了一个非常灵活的方法,对于无法适应其它HTTP方法语义的操作,POST都能胜任。
基于以上的观点,在谈REST的时候更希望听到的是RESTful资源,而不是REST服务、REST Web服务等术语。