作者 | Andrea Chiarelli
译者 | 无明
策划 | 小智
2000 年头,Douglas Crockford 声称 Javascript 是世界上被误解得最深的一门编程言语。形成误解的底子原因是糟糕的命名方法、规划上的过错和不严厉的规范,等等。所以说,导致这种误解是很天然的。
上一年,我在推特上发了一条有关 REST 架构范式的推文。
大多数人以为依据 URL 和 HTTP 动词规划的 API 便是 REST API,但这样的主意实际上错得离谱。
这个误解存在了很长一段时间。与 Javascript 纷歧样的是,REST 攻略现已说得很清楚了,REST 这个名词强调了状况转化(State Transfer),但大多数所谓的 REST API 规划者却疏忽了这一点。
假如你问一下身边的程序员他们规划的 API 是否支撑 HATEOAS,他们十有八九会瞪大了眼睛看着你,然后说:你到底在说什么?
但是,REST 的姓名自身就说明晰全部。它并没有说要运用哪一种协议,也没有说运用哪一种方法来标识资源,它只说到表明性状况搬运(REpresentational State Transfer)。Roy Fielding 博士说,状况搬运办理是 REST API 的一个必要条件。
真实的 REST API 应该为客户端供给状况以及在状况之间进行切换的方法。它供给了资源的表明(纷歧定是 JSON 格局)和指向相关资源的链接(超链接),这些链接能够让应用程序从一个状况切换到另一个状况。如下例所示:
{ "id": 463219, "firstName": "John", "lastName": "Smith", "company": "Acme Inc.", "salary": 72500, "links": [ { "href": "https://api.myapp.com/employees/employee/463219", "rel": "self" }, { "href": "https://api.myapp.com/companies/company/375", "rel": "company" }, { "href": "https://api.myapp.com/payments/employee/463219", "rel": "payments" } ]}
这个比如供给了资源的描绘和其他相关资源的信息。
需求特别说到的是,是否运用 HTTP 协议并不重要。REST 的要害之处在于让服务器端来担任客户端的状况搬运。客户端的状况几乎是由服务器端来驱动的,所以,评论 API 版别办理并没有多大含义。客户端只需知道 REST API 的进口点就能够了,剩余的依据服务器端的呼应来做决议,但这一点却被大多数人疏忽了。
仅仅简略地将 CRUD 操作映射到 HTTP 动词的 API 与应用程序状况搬运一点点扯不上联系,你能够把它们叫作 Web API 或 HTTP API,但请不要把它们叫作 REST API。
点个在看少个 bug