今天的CCNA课程依然之前的延续,主要是讲REST APIs,考试要求也只是能够描述即可。所以了解一下概念就行。
回忆之前课程中说到的,API 就是 Application Programming Interface,就是软件的接口,允许两个application互相交流用的。回忆之前说过的SDN 架构,REST API可以再 App和 controller之间起到作用(通过NBI),API应用于controller和netwrok devices之间(通过SBI)。
常见的southbound APIs 有 NETCONF 和RESTCONF
![](https://www.chaostudy.com/wp-content/uploads/2022/02/image-36.png)
今天主要讲的是 REST APIs,一般来说有四种操作形式,简称为CRUD。
Create 用来创建新的变量,以及设置初始状态,
例如create variable “IP address” and set the value to “10.1.1.1”
Read 用来retrieve the value of variable 就是索回变量的值
例如 what is the value of “IP address”?
Update 用来改变变量的值
例如 change the value of “IP address” to “10.2.3.4”
Delete 用来删除变量的值
例如 detele variable “IP address”
一般来说 REST APIs 使用HTTP,但是不是只能用HTTP,所以回忆一下我们很久以前学到的HTTP verb,其实是类似的,如下图所示,
![](https://www.chaostudy.com/wp-content/uploads/2022/02/image-37.png)
当HTTP 客户 发送一个请求到HTTP server的时候,HTTP header必然包括一个verb,比如POST,GET等等,还得包括一个URI(Uniform Resource Identifier),来表明尝试要进入的资源,如下图所示
![](https://www.chaostudy.com/wp-content/uploads/2022/02/image-38.png)
当然,除了这两个必须的以外,HTTP header也可以添加一些 additional header 来传递additional 信息到HTTP 服务器,如下图
![](https://www.chaostudy.com/wp-content/uploads/2022/02/image-39.png)
additional headers 有很多种,举例来说可能是 accept,来告诉服务器等下发回给客户端的数据格式,如下图所示
![](https://www.chaostudy.com/wp-content/uploads/2022/02/image-40.png)
当服务器收到这个HTTP请求后一般会发回去一个response,并且会携带一个状态码来表明接受是成功还是失败,或者其他情况。这个码一般是三位数
1xx informational 请求已经收到,持续处理
比如 102 Processing 表示服务器已经收到请求,但是还没完成回复
2xx successful 请求已经收到,了解并且接受
比如 200 OK 表明 请求成功
比如 201 Created 表明 请求成功,一个新的 resource 已经创立
3xx redirection 为了完成该请求需要进一步的动作
比如 301 Moved Permanerntly 表明请求的资源已经被移除,服务器给出了新的location
4xx client error 请求包括错误语法或者未能接受
比如 403 Unauthorized 表明客户端必须认证
比如 404 Not Found 表明无法找到请求资源
5xx server error 服务器未能完成一个明显有效的请求
比如 500 Internal Server Error 表明服务器遇到不可预测的事情,不知道如何处理
如下图所示,
![](https://www.chaostudy.com/wp-content/uploads/2022/02/image-41.png)
那么回到REST APIs上来,也是使用 Client Server 架构,这里注意一下REST APIs 是stateless的,意味着每一个 API exchange都是独立的,和之前,之后的 API exchange无关。假如需要验证的话,那么客户端的每一个 request都必须进行验证。
这里讲一个题外话,TCP就是 stateful protocol,而UDP就是stateless protocol
REST APIs 必须支持缓存数据,就像电脑里一般都是缓存某个网页的一些元素,这样不用每次访问都要接收到所有数据,这样可以提高速度,减少服务器的负荷。不是所有的数据都必须缓存,但是可以换成的数据必须申明自己是可以缓存的。
RESI API:Representational State Transfer APIs 不是特殊的API,而是描述了一系列规则来要求API如何工作。所以简单总结一下,
six constraint约束 of RESTful 架构有
![](https://www.chaostudy.com/wp-content/uploads/2022/02/image-42.png)
最后呢,可以在思科的免费平台上进行一系列的练习和测试,Cisco DevNet,Cisco DNA Center sandbox,Postman。
Cisco DNA Center是 Cisco's SDN的controller的一种,Postman是一个平台可以建立和使用APIs
developer.cisco.com
postman.com
postman.com/downloads
以上是几个网站,但是不是强制要求做。
0 条评论