RESTful交互是否需要在物理上分离的客户端和服务器之间进行?即交互是否需要以某种方式涉及网络栈?在应用程序的各个组件之间采用类似HTTP的“调用约定”是否有益?
对我来说,REST的好处几乎与在同一应用程序的组件之间通信一样适用于在物理上分离的客户端和服务器之间通信,并且可以满足REST的约束和指导原则,而无需涉及网络栈。(我并不是建议每个函数调用都“看起来像HTTP”,但对于某些函数调用或交互,使用类似HTTP的交互可能是有意义的。)
例如,在Web应用程序中,通过像http://api.local/user/34
这样的URL访问(“内部”)用户信息可能很有用,并且使用“HTTP客户端”在内部路由和分派请求,而不是通过标准的HTTP路由和分派过程。开发人员不需要提供传统的库和相关文档,而是提供URL终端点(资源),可以使用标准的HTTP动词进行操作。由于开发人员已经熟悉HTTP,所以需要的文档较少,并且在组件之间会有更多的一致性和统一性。我认为,以这种方式思考REST也有助于澄清REST和SOAP等RPC机制之间的区别--没有理由使用SOAP进行“内部”调用,但REST的已知行为和语义可能使其在某些情况下对“内部”调用有用。当然,如果您正在使用REST进行内部调用(REST Level 0?),则将此类交互转换为外部调用非常简单,如果需要,可以这样做。