软件定义 络笔记PART 6
- 北向接口协议
-
- 北向接口协议概述
-
- 什么是北向接口/li>
- 北向接口标准化工作
- 北向接口设计(两类)
- 北向接口与 络模型
-
- 基于意图的业务模型描述
- 基于意图的描述举例
- 北向接口的实现
- 什么是REST API/li>
-
- 什么是REST/li>
- RESTful与REST API
-
- 为什么需要RESTful/li>
- REST的几个重要概念
-
- URI 与 URL 的区别/li>
- REST的约束条件与原则
- REST API的设计
-
- REST API的设计
-
- HTTP动词
- 资源的原型
- URI命名规范
- URI格式规范
-
- 举例:id为123的user相关操作:
- URI的query字段
- HTTP响应状态码的使用
-
- 常用状态码
- 元数据设计
-
- 举例:Floodlight REST API
北向接口协议
北向接口协议概述
什么是北向接口/h3>
- 应用平面与控制平面之间的接口(NBI),通过控制器向上层业务应用开放的接口,为上层业务应用和资源管理系统提供灵活的 络资源抽象;
基于意图的业务模型描述
REST的几个重要概念
REST的约束条件与原则
-
客户-服务器(Client-Server):用户接口和数据存储的分离;
-
无状态(Stateless):要求每一个请求必须包含服务器处理该请求所需的所有信息;
-
缓存(Cache):要求一个请求的响应中的数据标记为是否可缓存;
-
统一接口(Uniform Interface):核心特征,强调组件之间要有一个统一的接口;
-
分层系统(Layered System):限制组件的行为,将架构分为若干等级的层;
-
按需代码(Code-On-Demand,可选):服务器可以提供一些代码或者脚本并在客户的运行环境中执行。
REST API的设计
REST API的设计
HTTP动词 + URI
- HTTP动词描述操作; URI是标识资源。
HTTP动词
资源的原型
-
文档(Document):文档是资源的单一表现形式;
-
集合(Collection):集合是资源的一个容器(目录),可以向里面添加 资源(文档);
-
仓库(Store):客户端管理的一个资源库,可以向仓库中新增资源 或者删除资源,或者从仓库中获取资源;
-
控制器(Controller):可以执行一个方法,支持参数输入,结果返回。
URI命名规范
资源命名规范:
- 文档(Document)类型的资源用名词单数命名
- 集合(Collection)类型的资源用名词复数命名
- 仓库(Store)类型的资源用名词复数命名
- 控制器(Controller)类型的资源用动词命名
URI中有些字段可以是变量,在实际使用中可以按需替换,
例如: http://api.soccer.restapi.org/leagues/{leagueId}/teams/{teamId}/players/{playerId}
- 其中:leagueId,teamId,playerId 是变量(数字,字符串等类型都可以)。
URI格式规范
- URI中分隔符“/”一般用来对资源层级的划分, ”/“不应该出现在URL的末尾;
- URI中尽量使用连字符”-“代替下划线”_”的使用
例如: http://api.example.restapi.org/blogs/mark-masse/entries/this-is-my-first-post
- URI中统一使用小写字母
- URI中不要包含文件(或脚本)的扩展名
例如:不要出来.php或者.json之类的后缀名。
- CRUD的操作不要体现在URI中
举例:id为123的user相关操作:
URI的query字段
- 作为查询的参数补充,以标示一个唯一的资源
- 作为过滤条件使用,例如:
GET /usersole=admin
- 作为资源列表分页标示使用,例如:
GET /usersageSize=25&pageStartIndex=50
HTTP响应状态码的使用
REST API相关的响应状态码
- 2xx:操作成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务器错误
常用状态码
元数据设计
HTTP Headers
举例:Floodlight REST API
Floodlight的北向API:OpenFlow流表、防火墙、ACL、多租户 络虚拟化。
ACL模块API:
使用POST动词具体创建ACL或是使用DELETE动词删除某条ACL时,还需要在json中带上需要传输的数据。例如以curl为例:
参考资料:中国大学MOCC SDN 络课程
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
基于意图的业务模型描述
REST的几个重要概念
REST的约束条件与原则
-
客户-服务器(Client-Server):用户接口和数据存储的分离;
-
无状态(Stateless):要求每一个请求必须包含服务器处理该请求所需的所有信息;
-
缓存(Cache):要求一个请求的响应中的数据标记为是否可缓存;
-
统一接口(Uniform Interface):核心特征,强调组件之间要有一个统一的接口;
-
分层系统(Layered System):限制组件的行为,将架构分为若干等级的层;
-
按需代码(Code-On-Demand,可选):服务器可以提供一些代码或者脚本并在客户的运行环境中执行。
REST API的设计
REST API的设计
HTTP动词 + URI
- HTTP动词描述操作; URI是标识资源。
HTTP动词

资源的原型
- 文档(Document):文档是资源的单一表现形式;
- 集合(Collection):集合是资源的一个容器(目录),可以向里面添加 资源(文档);
- 仓库(Store):客户端管理的一个资源库,可以向仓库中新增资源 或者删除资源,或者从仓库中获取资源;
- 控制器(Controller):可以执行一个方法,支持参数输入,结果返回。
URI命名规范
资源命名规范:
- 文档(Document)类型的资源用名词单数命名
- 集合(Collection)类型的资源用名词复数命名
- 仓库(Store)类型的资源用名词复数命名
- 控制器(Controller)类型的资源用动词命名
URI中有些字段可以是变量,在实际使用中可以按需替换,
例如: http://api.soccer.restapi.org/leagues/{leagueId}/teams/{teamId}/players/{playerId}
- 其中:leagueId,teamId,playerId 是变量(数字,字符串等类型都可以)。
URI格式规范
- URI中分隔符“/”一般用来对资源层级的划分, ”/“不应该出现在URL的末尾;
- URI中尽量使用连字符”-“代替下划线”_”的使用
例如: http://api.example.restapi.org/blogs/mark-masse/entries/this-is-my-first-post - URI中统一使用小写字母
- URI中不要包含文件(或脚本)的扩展名
例如:不要出来.php或者.json之类的后缀名。 - CRUD的操作不要体现在URI中
举例:id为123的user相关操作:
URI的query字段
- 作为查询的参数补充,以标示一个唯一的资源
- 作为过滤条件使用,例如:
GET /usersole=admin - 作为资源列表分页标示使用,例如:
GET /usersageSize=25&pageStartIndex=50
HTTP响应状态码的使用
REST API相关的响应状态码
- 2xx:操作成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务器错误
常用状态码
元数据设计
HTTP Headers
举例:Floodlight REST API
Floodlight的北向API:OpenFlow流表、防火墙、ACL、多租户 络虚拟化。
ACL模块API:
使用POST动词具体创建ACL或是使用DELETE动词删除某条ACL时,还需要在json中带上需要传输的数据。例如以curl为例:
参考资料:中国大学MOCC SDN 络课程
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!