API 入门 (18) 认识 REST

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了API 入门 (18) 认识 REST相关的知识,希望对你有一定的参考价值。

参考技术A API 设计是有风格的, RPC 、 REST 、 GraphQL 是当前比较流行的三种设计风格。在后面的文章中,我们会采用 REST 风格,对 API 进行设计和实现,所以本文就和大家一起认识一下 REST .

REST 是 Representational State Transfer 的缩略词表示,直译过来就是表征状态传输,具象状态传输,表述性状态转移,表现状态传输等,这也是网络上常见等译法。这种直译,让人有种知道每个词的意思,但不知道这些词组合起来在说什么的感觉。

所以,我们先来了解一下 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)要求:

REST(Representational State Transfer) 译成中文的关键是对 Representational 这个词的理解。

文章开头已经给出了一些网络常见翻译,现在我们从论文里找找线索。在论文的第五章里, Representational 出现了 4 次,都是以 Representational State Transfer 的组合方式使用的。他的名词形式 Representation 出现了 53 次。下面是一些相关的摘抄。

representation 是一串有序字节及其描述它的元数据。

为了帮助大家理解这个词语,作者还列举了几个相似的词语:文档(document),文件(file),HTTP 消息体(HTTP message entity),实例(instance),或变量(variant)。

representation 包括数据,元数据(描述数据的数据),描述元数据的数据


representation 的数据格式是大家所熟知的媒体类型。

大家可以把认为合理的词放入句子里,讲的通,能明白就行。当然,也可以去原文中研读更多的语境。

这里,比较合适的词可以是表示,描述,相应的 REST 可以翻译为:

甚至是把 Representational 这个词忽略掉,到更让人容易理解。 Representational 这个词强调的应该是资源的状态是可以通过某种形式让客户端识别的。不管怎样,到底是 僧敲月下门 ,还是 僧推月下门 ,请大家见仁见智吧。

Docker Rest API使用入门

 

Docker Rest API使用入门

系统:Centos7.2, Docker版本信息如下:

[python] view plain copy
  1. Client:  
  2.  Version:      17.03.0-ce  
  3.  API version:  1.26  
  4.  Go version:   go1.7.5  
  5.  Git commit:   3a232c8  
  6.  Built:        Tue Feb 28 08:10:07 2017  
  7.  OS/Arch:      linux/amd64  
  8.   
  9. Server:  
  10.  Version:      17.03.0-ce  
  11.  API version:  1.26 (minimum version 1.12)  
  12.  Go version:   go1.7.5  
  13.  Git commit:   3a232c8  
  14.  Built:        Tue Feb 28 08:10:07 2017  
  15.  OS/Arch:      linux/amd64  
  16.  Experimental: false  


开启Docker Rest API:

[python] view plain copy
  1. vi /usr/lib/systemd/system/docker.service  


修改或者添加一行配置:

[python] view plain copy
  1. ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:6066  -H unix:///var/run/docker.sock  


指定TCP协议IP为任意地址,端口为6066,如图:

技术分享



保存之后重启docker:

[python] view plain copy
  1. systemctl daemon-reload  
[python] view plain copy
  1. systemctl restart docker  


输入curl 127.0.0.1:6066/info 测试。

 














以上是关于API 入门 (18) 认识 REST的主要内容,如果未能解决你的问题,请参考以下文章

初级入门 --- 认识 WebGL

REST认识

从头认识java-18.2 主要的线程机制join

Netty入门教程——认识Netty

18-认识蜂鸣器 | Mixly技巧系列

18-认识蜂鸣器 | Mixly技巧系列