1.1.4 对REST的错误理解

理解REST及其约束,将有助于我们设计RESTful服务或RESTful API。然而在现实中,人们仍然对REST有错误的认识,认为只要有某种特性的API就是RESTful API。这些对REST错误的认识可能包含但不限于以下几种情况。

任何使用了HTTP方法的API。

返回JSON的API。

执行增删查改的API。

尽管REST风格的API同样具有上述特点并能够完成上述功能,然而这并不是说具有上述特点的API就是RESTful API。只有遵守了REST约束的API,才能够称为RESTful API。另外,Richardson成熟度模型是衡量API成熟度的一种方式,该模型进一步描述了各种Web API的特征,根据该模型,只有最成熟的API才是RESTful API。在7.4节中,将会更详细地介绍Richardson成熟度模型。

除了REST外,另一种常见的API风格是RPC风格,即远程过程调用(Remote Procedure Call)。下面是一个典型的RPC风格的API。

GET api.domain.com/getUserInfo

GET api.domain.com/UpdateUserInfo

REST风格与RPC风格的区别如下。

在关注点方面,REST面向资源,RPC面向功能。

在API端点方面,REST的端点是名词、是资源或资源集合,而RPC的端点是动词、是方法名。

在执行特点方面,REST对资源执行操作,RPC执行服务器上的方法。

在返回结果方面,REST返回请求的资源,而RPC则返回调用方法的执行结果。