RESTful:

Rest是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。而满足这些约束条件和原则的应用程序或设计就是 RESTful。
如图有四个层次:

level 0:The swarmp of POX(Plain old XML)

该模型的出发点是使用HTTP作为远程交互的传输系统,但不使用Web的任何机制。基本上你在这里做的是使用HTTP作为你自己的远程交互机制的隧道机制,通常基于远程过程调用

特点:
  1. HTTP仅作为一个通信隧道(即HTTP只关注通信消息,而不关注客户端及服务器间的行为)

  2. 采用远程调用协议(Remote Procedure Call Protocol):即客户端想要执行某一任务,或者说向服务器请求某一服务,只需发送相关消息(执行某一句柄),而不用关心底层实现。

  3. 提供一个调用接口给客户端。

 

Level 1:Resources

在RMM中迈向休息荣耀的第一步是引入资源。现在,我们现在开始讨论各个资源,而不是将所有请求发送到单一服务端点。

特点:
  1. 通过URI来定位资源,实现资源独立性

  2. 采用“面向对象”的通信方式

相比于Level 0,这层更加成熟的地方是客户端需要标明“我需要什么?”
 
 

Level 2:HTTP Verbs

我已经在0级和1级的所有交互中使用了HTTP POST动词,但有些人使用GET代替或另外使用GET。在这些级别上它没有太大区别,它们都被用作隧道机制,允许您通过HTTP隧道交互。2级远离此,使用HTTP动词尽可能接近它们在HTTP本身中的使用方式。

 
特点:

Level 2追加了HTTP动作来指明我们对于资源要做何种操作,如此,客户端的请求就能完整的表述为“我需要对XX(资源)做XX(行为)”,该层级是当前使用最为广泛地REST层级,通常定义如下四个HTTP动作:

  1. GET—-》一般性获得资源,并不改变资源,所以这种操作相对安全

  2. POST—》通常为创建资源操作

  3. PUT—-》通常为更新资源操作

  4. DELETE-》删除资源操作

同时,服务端不再通过错误消息(当然,某些系统也会封装错误消息,给予客户友善提示)来告诉客户端执行状态,而是通过返回HTTP状态字来告知客户端请求执行结果。

Level 3:Hypermedia Controls (超媒体控制)

最后一个级别引入了一些您经常听到的在HATEOAS(超文本作为应用程序状态引擎)的首字母缩写词中提到的内容。它解决了如何从列表中打开插槽到知道如何预约的问题。

特点:
首先要知道HATEOAS (Hypertext As The Engine Of Application State):这种策略解决了我们如何从得到的资源中顺带知晓下一步应当如何进行?因为要服务端的响应要封装“下一步如何做”。
 

层次的意义:

  • Level 1通过使用分而治之来解决处理复杂性的问题,将大型服务端点分解为多个资源。
  • Level 2引入了一组标准动词,以便我们以相同的方式处理类似的情况,消除不必要的变化。
  • Level 3引入了可发现性,提供了一种使协议更加自我记录的方法。

HATEOAS

  由上面可知HATEOAS位于第三层。

  HATEOAS即超媒体应用程序状态的引擎,是其余应用程序体系结构的一个组成部分,它区别与其他网络应用程序体系结构。使用HATEOAS,客户端与应用服务器的网络应用程序提供通过超媒体动态信息。REST客户需求没有先验知识如何与应用程序交互或服务器超出一般的超媒体的理解。相比之下,在CORBA客户机和服务器交互通过固定接口共享文档或一个接口描述语言(IDL)。

HATEOAS为RESTful Web服务带来了相同的概念。

当请求资源的某些详细信息时,您将提供资源详细信息以及相关资源的详细信息以及您可以对资源执行的可能操作。

Restful levels and Hateoas的更多相关文章

  1. RESTful levels 和 HATEOAS

    RESTful REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序.它首次出现在 2000 年 Roy ...

  2. RESTful levels、HATEOAS

    概述: REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序.它首次出现在 2000 年 Roy Fiel ...

  3. Restful levels&HATEOAS

    RESTful: Rest是一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等 ...

  4. Restful levels&HATEOAS详解

    RESTful: Rest是一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等 ...

  5. RESTful Levels & HATEOAS

    什么是RESTful REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的.翻译过来就是"表现层状态转化.” REST是一种软件架构风格.设计风格,而不是 ...

  6. Restful levels &HATEOAS基本介绍~

    本文所涉及的内容摘自:http://www.manongjc.com/article/93934.html 什么是RESTful REST这个词,是Roy Thomas Fielding在他2000年 ...

  7. restful levels

    1. 什么是RESTful REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的.翻译过来就是"表现层状态转化.” REST是一种软件架构风格.设计风格, ...

  8. RestFul && HATEOAS && Spring-Data-Rest介绍

    1.什么是RestFul 经常上网的同学会发现,现代软件的一个重要趋势就是互联网化,几乎没有一款软件是纯粹的单机版了.通常的情况下,软件管理着服务器的资源以及这些资源的状态变化,用户通过在浏览器输入h ...

  9. Restful 级别划分以及HATEOAS是什么?

    Restful简介 Rest是一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存 ...

随机推荐

  1. vue_vuex

    vuex vue 插件 npm install vuex --save 将多个组件的共享状态进行 集中式管理 - 极易破坏单向数据流 多个视图依赖于同一状态 ----- 就 props 而言:嵌套组件 ...

  2. Java for Android 学习第一周

    前言 专业Java程序员所必需掌握的3个主题: 1. Java编程语言 2. 使用Java的面向对象编程(OOP) 3. Java核心库 JDK.JRE和JVM 1. javac编译java源代码为字 ...

  3. Oracle 触发器 trigger

    触发器: 当用户登录/退出或者操作某个数据对象或者进行DDL(建表,建view)引起某个储存过程的值的变化,把这个隐含被调用的过程,称为触发器. 语法 CREATE OR REPLACE TRIGGE ...

  4. mysql字符集校对

    常用的两种 utf8_general_ci 按照普通的字母顺序,而且不区分大小写(比如:a B c D)utf8_bin 按照二进制排序(比如:A排在a前面,B D a c) ci是 case ins ...

  5. 问题:怎么把mysql的系统时间调整为电脑的时间?(已解决)

    我的mysql是5.7版本. 浏览mysql的错误日志的时候,发现时间和电脑时间不一致. 查了一下,知道这个时间和log_timestamps有关, 就在mysql里执行下面一句话: SET GLOB ...

  6. PDF的水印怎么去掉

    很多朋友私下都有问过PDF去除水印的方法,现在在网上下载一些PDF电子书,几乎页面内都会有水印的,而且有的水印还带有超链接,稍微不注意就会点开进入别的页面内,不仅影响了阅读效果还带给读者负面影响,那如 ...

  7. 音频 m4a 转 wav

    背景 最近做智能家居,需要用到一些应答词 需要自己录制.但是在mac下面通过 QuickTime 录制的是 m4a格式.但是应答词需要 wav格式.所以就需要转化了 解决方法 # sox 不行, ff ...

  8. 使用vue+elementUI+springboot创建基础后台增删改查的管理页面--(1)

    目前这家公司前端用的是vue框架,由于在之前的公司很少涉及到前端内容,对其的了解也只是会使用js和jquery,所以..慢慢来吧. 在此之前需要先了解vue的大致语法和规则,可先前往官方文档进行学习h ...

  9. 如何成功安装旧版本火狐,成功安装firebug和firepath插件

    很久不用火狐了,为了练习selenium定位浏览器等操作,下载了火狐浏览器,新版火狐已经没有firebug和firepath等插件,无法使用,只有安装老版本的火狐:*****安装好之后立刻设置不让他自 ...

  10. 接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)

    背景 博主的主要工作是测试API,目前已经用Jmeter+Jenkins实现了项目中的接口自动化测试流程.但是马上要接手的项目,API应用的是OAuth2.0协议授权,并且采用的是简化模式(impli ...