一:什么是REST API

REST API是北向接口的主流设计方式
API是应用程序编程接口,是预先定义好的函数,可以供应用程序或开发人员访问调用
REST (Representational State Transfer,表述化状态转移)首次出现在 年 Roy Thomas Fielding 的博士论文中,
指的是一组架构约束条件和原则

(一)REST和API关系

而满足REST约束条件和原则的设计规范或者架构风格,我们称之为RESTful,遵循RESTful设计的API就是REST API

(二)RESTful

RESTful并不是专门为SDN提出的,而是专门针对Web应用中HTTP使用中出现的一些问题提出的,由于HTTP协议的使用很不规范、随意、混乱

URL的设计缺乏规范性
HTTP的动词使用不当
HTTP的返回状态码使用不规范等
Restful正是针对HTTP中上述问题而提出的

Restful设计上例:

显得更加规范和简洁

(三)REST中的几个重要概念

资源:REST是面向资源的设计

比如在普通的博客应用中,资源可能是包括了用户、博文或者评论等
在SDN中,资源可能是链路、交换机、流表等

资源标识符:

URI是统一资源标示符,URL是统一资源定位符。URL是URI的子集,或者说是一种具体实现
对于REST API来说一个资源对应唯一的一个URI,REST通过URI来暴露资源,URI的设计的合理性和规范性十分重要

(四)REST的约束条件与原则

客户-服务器(Client-Server)约束---实现解耦

用户接口和数据存储的分离;---通过客户端用户接口和服务器数据存储的分离,提高了客户端的便捷性,也提高了服务端的可伸缩性

由于实现了解耦,就能够允许客户端和服务端分组优化,彼此之间不受影响

无状态(Stateless):

要求来自客户端的每一个请求必须包含服务器处理该请求所需的所有信息; --- 提高了可见性和可靠性,由于服务器是无状态的,能够很方便的实现水平扩展,提高了可扩展性
无状态:相对有状态而言,大多数访问网站都是有状态的

在该流程中后面的每一个状态都依赖于前面的状态,没有一个URL可以直接查询到成绩
而在RESTful的架构中

可以直接定位到服务器的资源,不依赖于服务器的会话状态,因此是无状态 

缓存(Cache):

要求一个请求的响应中的数据标记为是否可缓存;如果可以,客户端可以重用相同请求的响应数据---减少了CS交互次数,提高了效率

统一接口(Uniform Interface):

核心特征,强调组件之间要有一个统一的接口; --- CS之间通信的方法必须是统一化的,例如标准的HTTP动作

分层系统(Layered System):

限制组件的行为,将架构分为若干等级的层;允许服务器和客户端之间的中间层,例如反向代理、API网关,可以代替服务器对客户端的请求进行回应,而对客户端而言是透明的,提高了系统的可扩展性,也增加了系统的复杂性

按需代码(Code-On-Demand,可选):

服务器可以提供一些代码或者脚本并在客户的运行环境中执行。

软件定义网络基础---REST API概述的更多相关文章

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

    一:REST API的设计 REST API是基于HTTP协议进行设计的,由HTTP动词+URI组成 (一)HTTP动词 (二)资源的原型 文档(Document): 文档是资源的单一表现形式: 集合 ...

  2. 软件定义网络基础---OpenFlow概述

    一:OpenFlow概述 二:交换机模型架构 (一)OpenFlow构架三个组成成分 三:OpenFlow 1.0版本 自OpenFlow1.0发布以来,目前已经有多个版本的OF规范版本被发布 四:O ...

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

    一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑.  对底层网络交换设备进行集中管理,状态监测.转发决策以及处理和调 度数据平面的流量:  通过北向接口向上层应用开放多个层次的可编程能 ...

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

    一:基于不同标准的主流构架 二: ONF定义的SDN基本构架 (一) 四个平面.两大接口 三:四个平面 (一)数据平面 数据平面是由若干网元(Netword Element)构成,每个网元包括一个或多 ...

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

    一:流表 (一)流的概念 我们把同一时间经过同一网络中,具有某种共同特征或属性的数据,抽象为一个流 比如:我们将访问同一个地址的数据视为一个流 流一般是由网络管理员定义的,可以根据不同的流执行不同的策 ...

  6. 软件定义网络基础---OpenFlow协议

    一:OpenFlow协议概述 OpenFlow协议为控制器与交换机之间的通信,提供了一种开放标准的方式.OpenFlow交换机通过安全通道与控制器进行信息交互 二:OpenFlow消息类型 (一)co ...

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

    netconf协议最早被作为网管协议被提出来的,与SNMP网管协议相比较:SNMP的优势在于网络设备的监测,在大规模网管应用中有很大不足,正是针对这种不足之处,提出了NETCONF协议 一:NETCO ...

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

    主要介绍SDN架构和转发模型 一:传统网络设备 (一)传统设备控制平面和数据平面 (二)数据平面的任务 数据平面对数据包的处理,主要通过查询由控制平面所生成的转发信息表来完成 (三)传统网络数据平面数 ...

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

    一:SDN包含的核心思想:解耦,抽象,可编程 二:解耦 (一)SDN网络解耦思想 解耦是指将控制平面和数据平面进行分离,主要为了解决传统网络中控制平面和数据平面在物理上紧耦合导致的问题 控制平面和数据 ...

随机推荐

  1. Beta版本冲刺及发布成绩汇总

    作业要求 1.作业内容: 作业具体要求及评分标准的链接 2.评分细则 1.冲刺内容占30分. (1)  各成员两天完成的工作,以及后续两天的任务安排(表格的形式记录各个成员这两天的工作,表格内容参考S ...

  2. python正则表达式练习题

    # coding=utf-8 import re # 1. 写一个正则表达式,使其能同时识别下面所有的字符串:'bat','bit', 'but', 'hat', 'hit', 'hut' s =&q ...

  3. ARTS-week4

    Algorithm 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的.示例:输入:1->2->4, 1->3->4输出:1->1 ...

  4. less-6

    首先输入id=1和id=1’未报错,均显示You are in.....(如下图所示) 由上图可以看到,如果运行返回结果正确的时候只返回you are in...,不会返回数据库当中的信息了,可以从这 ...

  5. UVA 13024: Saint John Festival(凸包+二分 ,判定多个点在凸包内)

    题意:给定N个点,Q次询问,问当前点知否在N个点组成的凸包内. 思路:由于是凸包,我们可以利用二分求解. 二分思路1:求得上凸包和下凸包,那么两次二分,如果点在对应上凸包的下面,对应下凸包的上面,那么 ...

  6. UVA - 12183 :Top Secret(N^2的循环矩阵乘法)

    pro:N个数排成一圈.一次操作为,每个位置的数+=L*左+R*右,保留x为整数. 问S轮操作后每个位置的值. N<=1000,S<=2^30,x<=9 . sol:不难想到矩阵乘法 ...

  7. 《团队作业第三、四周》五阿哥小组Scrum 冲刺阶段---Day3

    <团队作业第三.四周>五阿哥小组Scrum 冲刺阶段---Day3 一.项目燃尽图 二.项目进展 20182310周烔今日进展: 主要任务一览:界面布局的设计 20182330魏冰妍今日进 ...

  8. How Open Source Became The Default Business Model For Software

    https://www.forbes.com/sites/forbestechcouncil/2018/07/16/how-open-source-became-the-default-busines ...

  9. hdu2643&&hdu2512——斯特林数&&贝尔数

    hdu2643 题意:$n$ 个人的排名情况数($n \leq 100$) 分析:考虑 $n$ 个有区别的球放到 $m$ 个有区别的盒子里.无空盒的方案数为 $m!\cdot S(n, m)$. 这题 ...

  10. 使用window.localStorage,window.localStorage记录点击次数

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...