API 筹划是有风格的,RPC、REST、GraphQL 是当前比力盛行的三种筹划风格。在反面的文章中,我们会接纳 REST 风格,对 API 举行筹划和实现,以是本文就和各人一起熟悉一下 REST.
REST 是 Representational State Transfer 的缩略词体现,直译过来就是表征状态传输,具象状态传输,表述性状态转移,表近况态传输等,这也是网络上常见等译法。这种直译,让人有种知道每个词的意思,但不知道这些词组合起来在说什么的感觉。
以是,我们先来了解一下 REST 的产生,再实验表明一下这个术语。
REST 汗青
2000年,Roy Thomas Fielding 在他的博士学位论文——《Architectural Styles and the Design of Network-based Software Architectures》——中提出了 REST 架构风格,并在论文的第五章,CHAPTER 5 Representational State Transfer (REST),具体论述了 REST 架构风格。与此同时,论文的作者正在举行 HTTP 1.1 协议的开发工作。正是这项工作,促成了 REST 架构风格的产生。
REST 架构风格的目的就是资助构建高效的、可扩展的、可靠的分布式体系。分布式体系也是一个比力抽象的词,在这里,我们可以明白为由很多位于差异盘算机上的软件构成,相互之间靠网络毗连和通讯,协同完成工作的体系。
论文作者提出,REST 架构风格的筹划要满足下面六个束缚(constraint)要求:
- Client/server 束缚 — Client/server 束缚遵照的原理是相干性隔离。当移动应用和API服务一起工作,完成用户目的时,必须明确分别他们的职责。
- Statelessness — 无状态性。每一个哀求(从客户端到服务器),必须包罗全部须要的信息,让服务能够明白和处置惩罚该哀求,不能利用服务端存储的信息。换句话说,客户端生存完备的会话信息。
- Cacheability — 缓存本领。客户端能够存储来自服务器的相应数据,也能选择不存储。假如客户端存储了相应的数据,客户端可以重用相应数据,不必再向服务器发送哀求。
- Layered system — 分层体系。服务器的体系分层筹划,可以隐蔽复杂的布局和逻辑。客户端只必要和体系的某一个层举行交互,不必要了解其背后处置惩罚的具体逻辑。TCP 协议就是一个典范的例子。
- Code on demand — 按需实行代码。客户端能够根据必要,从服务器下载可运行的代码(如 Javascript),实现功能扩展。这是可选束缚要求。
- Uniform interface — 同一接口。这是独特的焦点特性,让 REST 与其他网络筹划风格区分开来:组件之间要利用同一的接口风格。固然,这也是 REST 名字的泉源。定义 REST 接口要满足四个要求:资源辨认;通过形貌对资源操纵;自形貌的消息;超媒体作为应用状态引擎。
REST 表明
REST(Representational State Transfer) 译成中文的关键是对 Representational 这个词的明白。
文章开头已经给出了一些网络常见翻译,现在我们从论文里找找线索。在论文的第五章里,Representational 出现了 4 次,都是以 Representational State Transfer 的组合方式利用的。他的名词情势 Representation 出现了 53 次。下面是一些相干的摘抄。
A representation is a sequence of bytes, plus representation metadata to describe those bytes.
representation 是一串有序字节及其形貌它的元数据。
Other commonly used but less precise names for a representation include: document, file, and HTTP message entity, instance, or variant.
为了资助各人明白这个词语,作者还枚举了几个相似的词语:文档(document),文件(file),HTTP 消息体(HTTP message entity),实例(instance),或变量(variant)。
A representation consists of data, metadata describing the data, and, on occasion, metadata to describe the metadata (usually for the purpose of verifying message integrity).
representation 包罗数据,元数据(形貌数据的数据),形貌元数据的数据
。
The data format of a representation is known as a media type.
representation 的数据格式是各人所熟知的媒体范例。
各人可以把以为公道的词放入句子里,讲的通,能明确就行。固然,也可以去原文中研读更多的语境。
这里,比力符合的词可以是体现,形貌,相应的 REST 可以翻译为:
乃至是把 Representational 这个词忽略掉,到更让人轻易明白。Representational 这个词夸大的应该是资源的状态是可以通过某种情势让客户端辨认的。不管怎样,到底是僧敲月下门,还是僧推月下门,请各人见仁见智吧。 |