软件定义网络基础---REST API的设计规范

一:REST API的设计

REST API是基于HTTP协议进行设计的,由HTTP动词+URI组成

(一)HTTP动词

(二)资源的原型

文档(Document):

文档是资源的单一表现形式;

集合(Collection):

集合是资源的一个容器(目录),可以向里面添加 资源(文档);

仓库(Store):

客户端管理的一个资源库,可以向仓库中新增资源 或者删除资源,或者从仓库中获取资源;

控制器(Controller):

可以执行一个方法,支持参数输入,结果返 回。

(三)RESTful设计中URI命名的规范

资源命名规范:

? 文档(Document)类型的资源用      名词单数命名
? 集合(Collection)类型的资源用    名词复数命名
? 仓库(Store)类型的资源用        名词复数命名
? 控制器(Controller)类型的资源用  **动词**命名

URI命名规范:

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中

举例:

URI的query字段:

? 作为查询的参数补充,以标示一个唯一的资源
? 作为过滤条件使用,例如:
? GET /users?role=admin
? 作为资源列表分页标示使用,例如:
? GET /users?pageSize=25&pageStartIndex=50

(四)HTTP响应状态

REST API相关的响应状态码

? 2xx:操作成功
? 3xx:重定向
? 4xx:客户端错误
? 5xx:服务器错误

常用状态码

? 200 (“OK”) :一般性的成功返回,不可用于请求错误返回;
? 201 (“Created”) :资源被创建;
? 202 (“Accepted”) :Controller控制类资源异步处理的返回,仅表示请求已经收到;
? 204 (“No Content”) :可能会出现在PUT、POST、DELETE的请求中;
? 303 (“See Other”) :返回一个资源地址URI的引用,但不强制要求客户端获取该
地址的状态;
? 400 (“Bad Request”) :客户端一般性错误返回, 其它4xx的错误,也可以使用400,
具体错误信息可以放在body中;
? 401 (“Unauthorized”) :认证错误;
? 404 (“Not Found”) :找不到URI对应的资源;
? 500 Internal Server Error:服务器处理请求时发生了意外;
? 503 Service Unavailable:服务器无法处理请求,一般用于网站维护状态。

(五)元数据设计

HTTP Headers

? Content-Type :body的数据格式,如Content-type: application/json,表示主类型是application,数据格式是json
? Content-Length :body 数据体的大小
? Last-Modified :资源最后被修改的时间戳
? ETag :服务器端资源版本的标示
? Location :在响应header中使用
? Cache-Control, Expires, Date : 通过缓存机制提升接口响应性能

二:举例---实际SDN控制器中REST API的设计

(一)Floodlight REST API

Floodlight北向API对外提供了四个模块:OpenFlow流表、防火墙、ACL、多租户网络虚拟化。

ACL模块的API

? 查询所有ACL规则:GET http://<controller_ip>:8080/wm/acl/rules/json
? 添加ACL规则:POST http://<controller_ip>:8080/wm/acl/rules/json
? 删除一条ACL:DELETE http://<controller_ip>:8080/wm/acl/rules/json
? 删除所有ACL:GET http://<controller_ip>:8080/wm/acl/clear/json
使用POST动词具体创建ACL或是使用DELETE动词删除某条ACL时,还需要在json中带上需要传输的数据。例如以curl为例:
curl -X POST -d
‘{"src-ip":"10.0.0.1/32","dst-ip":"10.0.0.2/32","action":"deny"}‘
http://<controller_ip>:8080/wm/acl/rules/json

原文地址:https://www.cnblogs.com/liujunjun/p/12230670.html

时间: 2024-11-08 04:11:14

软件定义网络基础---REST API的设计规范的相关文章

软件定义网络基础---REST API概述

一:什么是REST API REST API是北向接口的主流设计方式 API是应用程序编程接口,是预先定义好的函数,可以供应用程序或开发人员访问调用 REST (Representational State Transfer,表述化状态转移)首次出现在2000 年 Roy Thomas Fielding 的博士论文中,指的是一组架构约束条件和原则. (一)REST和API关系 而满足REST约束条件和原则的设计规范或者架构风格,我们称之为RESTful,遵循RESTful设计的API就是REST

软件定义网络基础---SDN的主流构架

一:基于不同标准的主流构架 二: ONF定义的SDN基本构架 (一) 四个平面.两大接口 三:四个平面 (一)数据平面 数据平面是由若干网元(Netword Element)构成,每个网元包括一个或多个SDN数据路径(DataPath) SDN DataPath是一个逻辑上的网络设备,负责转发和处理数据.没有控制能力 ONF标准化了OpenFlow协议.在该协议中数据平面被抽象为一个由多级流表驱动的转发模型  (二)控制平面 第二个任务是:收集网络的实时状态,为SDN应用... SDN控制器是整

软件定义网络基础---SDN控制平面

一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑. ? 对底层网络交换设备进行集中管理,状态监测.转发决策以及处理和调 度数据平面的流量: ? 通过北向接口向上层应用开放多个层次的可编程能力. (一)典型的SDN控制器体系架构 SDN控制平面分为6层 南向接口层主要对各种南向接口协议的支持,如Open Flow,Netconf,OVSDB等,控制器通过接口层的通道实现对底层网络的管理 抽象逻辑层主要是将服务抽象出来,实现各种通信协议的适配,为各模块和应用提供一致的服务 基础网络层在任

软件定义网络基础---Openflow概述

一:OpenFlow概述 二:交换机模型架构 (一)OpenFlow构架三个组成成分 三:OpenFlow 1.0版本 自OpenFlow1.0发布以来,目前已经有多个版本的OF规范版本被发布 四:OpenFlow主要版本及特性 (一)OpenFlow 1.0 1.0版本中,只支持单流表.每个OpenFlow交换机中,都只有一张流表,用于数据包的查找.处理.转发. 并且只能同一台控制器进行通信 流表由多个流表项组成,每个流表项就是一个转发规则. 流表项有匹配字段.计数器和动作组成 (二)Open

软件定义网络基础---SDN的发展

一:发展初期阶段--提出 架构.设计思想和实现技术的提出 二:发展中期阶段--企业加入,推动发展 三:SDN的发展趋势 (一)SD-DC SDN被大规模应用数据中心的服务器和设备部署运维,产生了软件定义的数据中心 (一)SD-WAN 软件定义网路被用于广域网,产生了SD-WAN.不仅可以用来部署全新的广域网连接,还可以对现有的广域网进行升级和改造 例:对广域网进行升级 (三)SD-Security 软件定义的安全 (四)SD-Access 软件定义的接入 四:SDN的技术融合 原文地址:http

软件定义网络基础---SDN的核心思想

一:SDN包含的核心思想:解耦,抽象,可编程 二:解耦 (一)SDN网络解耦思想 解耦是指将控制平面和数据平面进行分离,主要为了解决传统网络中控制平面和数据平面在物理上紧耦合导致的问题 控制平面和数据平面之间不需要相互依赖,只需要遵循一定的开放接口即可进行通信 (二)传统网络比较 传统网络 在传统网络中数据平面和控制平面没有分离. 在同一个网络设备中,设备的转发行为基于控制协议生成的转发表. 比如:二层交换机基于MAC地址表进行转发.路由器基于路由表结合性转发. 而各种转发表是由设备的控制平面,

软件定义网络基础---SDN数据平面

主要介绍SDN架构和转发模型 一:传统网络设备 (一)传统设备控制平面和数据平面 (二)数据平面的任务 数据平面对数据包的处理,主要通过查询由控制平面所生成的转发信息表来完成 (三)传统网络数据平面数据包的处理流程 (四)传统网络数据转发处理特点 比如某一设备的数据平面,只能对某几种特定协议的数据包进行解析 功能模块固定,在网络生产时就已经固定.例如: 二:SDN数据平面架构 (一)主要变化 第一:在该SDN数据平面中,包处理流程中的所有模块,包括解析.转发和调度,都是可编程.协议无关的 第二:

软件定义网络基础---OpenFlow流表

一:流表 (一)流的概念 我们把同一时间经过同一网络中,具有某种共同特征或属性的数据,抽象为一个流 比如:我们将访问同一个地址的数据视为一个流 流一般是由网络管理员定义的,可以根据不同的流执行不同的策略,在OpenFlow中,数据都是作为流进行处理的.所以流表就是针对特定流的策略表项的集合,负责数据包的查找和转发 一张流表包含了一系列的流表项flow entries (二)流表项组成 (包头域.计数器.动作表3个) (三)包头域 (四)计数器 (五)动作表 动作表用于指示交换机,在收到匹配的数据

软件定义网络基础---NETCONF协议

netconf协议最早被作为网管协议被提出来的,与SNMP网管协议相比较:SNMP的优势在于网络设备的监测,在大规模网管应用中有很大不足,正是针对这种不足之处,提出了NETCONF协议 一:NETCONF协议 NETCONF协议虽然是多个SDN控制支持的南向协议,但是他无法指导交换机进行数据转发,它与OF-Config OVSDB协议类似,是一种网络设备的配置管理协议 (一)功能 NETCONF是新一代网管协议:网络配置协议NETCONF(Network Configuration Protoc