zoukankan      html  css  js  c++  java
  • Restful levels

    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引入了可发现性,提供了一种使协议更加自我记录的方法

    参考:http://www.mamicode.com/info-detail-2652030.html

  • 相关阅读:
    [商业][思想]《免费 商业的未来 Free The Future of a Radical Price》 克里斯·安德森(美)
    《幸福就在你身边》第六课、心动就要行动【哈佛大学"幸福课"精华】
    人性歪曲的心理调适 一【犹豫心理、怯场心理、依赖心理、盲从心理、攀比心理】
    《幸福就在你身边》第九课、确信自己有好命【哈佛大学"幸福课"精华】
    ORACLE FLASHBACK恢复删除的所有表
    抽象类和接口的例子
    抽象类专题二:抽象类的用途
    Entity Framework中的批量提交与事务处理[转]
    如何处理JSON中的特殊字符
    C# params参数的应用
  • 原文地址:https://www.cnblogs.com/zxzx1/p/10667918.html
Copyright © 2011-2022 走看看