解法
成千上万的系统想通过互联网暴露自己,但每个系统都构建了定制的RPC协议,导致没有客户端能同时与两个系统通信。障碍不是智力或带宽,而是每个服务特有的接口。
菲尔丁的论文表明,最低限度是统一接口:用URI标识资源,通过表示来操作资源,保持消息自描述,并使用超媒体作为状态引擎,叠加在客户端-服务器、无状态和缓存的现有约束之上。
因为REST复用了HTTP的通用动词,而不是发明新动词,一个能获取页面的客户端也能调用API。这就是为什么REST成为Web API的默认选择,取代了RPC和CORBA风格。
What it achieved
复用HTTP的动词和资源地址作为接口。
为什么有效
统一接口意味着一个通用客户端和库集可以适用于所有REST API,降低了集成成本。
因为REST是约束而非定义,并且构建在HTTP之上,所以无需部署新协议或栈。
无状态加缓存让中间件能扩展请求,而服务器无需在调用之间知道调用者是谁。
超媒体作为状态引擎,让客户端发现可用操作,而不是硬编码每个端点。
可以借鉴什么
从已经无处不在的东西中推导出的标准继承了其影响力;有时最大的设计决策是你拒绝添加的约束。
后续
菲尔丁的论文于2000年发表,REST成为公共和内部Web API的主导风格,取代了SOAP风格的RPC。后来它获得了惯例(OpenAPI,以及常低估超媒体的CRUD-over-HTTP解读),也有人认为其最严格的超媒体形式很少被实现,但统一接口的理念赢得了胜利。
从这里,追溯依据
参考来源
- Representational State Transfer (REST), Fielding Dissertation Chapter 5 ics.uci.edu
- Representational state transfer en.wikipedia.org