• 概念——表征状态转移(Representational State Transfer,REST)


    本文内容

    • 宗旨
    • 要点
    • 示例
    • 优点
    • 参考

    表征状态转移(Representational State Transfer,REST)是 Roy Fielding 在 2000 年他的博士论文中提出来的一种软件架构风格。

    目前的三种主流 Web 服务实现方式——远程过程调用(RPC),面向服务架构(SOA)以及表述性状态转移(REST),REST 方式与复杂的 SOAP 和 XML-RPC 比起来更加简洁,越来越多的 Web 服务开始采用 REST 风格设计和实现。例如,Amazon.com 提供接近 REST 风格的 Web 服务进行图书查找;雅虎提供的 Web 服务也是 REST 风格的。

    远程过程调用(RPC)

    远程过程调用为 Web 服务提供一个分布式函数/方法接口供用户调用。这是一种较传统的方式。通常,在 WSDL 中对 RPC 接口进行定义(类似于早期的XML-RPC)。本质上,RPC 方式利用一个简单映射,把用户请求直接转化成一个特定语言编写的函数/方法。现在,该方式已不再使用。

    面向服务架构(SOA)

    面向服务架构现在,业界比较关注的是遵从面向服务架构(Service-oriented architecture,SOA)来构建 Web 服务。该方式中,通讯是由消息驱动,而不再是某个动作(方法调用)。这种 Web 服务也称为“面向消息的服务”。

    宗旨


    表征状态转移(Representational State Transfer)从资源角度来观察整个网络,资源由通用资源标志符(Uniform Resource Identifier,URI)确定,客户端应用通过 URI 获取资源的表征,这些表征会使应用程序转变其状态。随着不断地获得资源表征,客户端应用也不断地转变其状态,这就是 REST。

    这个观点不是凭空想出来的,而是通过观察当前 Web 互联网的运行方式抽象出来的。Roy Fielding 认为“ 设计良好的网络应用表现为一系列的网页,网页可以看作是虚拟状态机,用户选择链接将使网页传输到客户端,并展现给用户,而这会导致状态的转变。”

    要点


    REST 是种设计风格,而不是个标准。REST 通常是基于 HTTP、URI 以及 HTML 和 XML,这些目前的广泛使用的协议和标准。

    • 资源由 URI 指定。
    • 对资源的操作,包括获取、修改、创建和删除,这些操作对应 HTTP 协议提供的 GET、POST、PUT 和 DELETE 方法。
    • 通过操作资源的表现形式来操作资源。
    • 资源的表现形式是 HTML/XML,也可以是其他格式。
    REST 要求
    • 客户端和服务器结构
    • 连接协议具有无状态性
    • 能够利用 Cache 机制提高性能
    • 层次化的系统
    • Javascript(可选)
    RESTful Web 服务

    RESTful Web 服务(RESTful Web API)是一个使用 HTTP 协议,并遵循 REST 原则的 Web 服务。它从三个方面对资源进行定义:

    • URI,如 http://example.com/resources/
    • RESTful Web 服务可以接受与返回的互联网媒体类型,比如:JSON,XML ,YAML 等
    • RESTful Web 服务支持的一系列请求方法,包括 POST、GET、PUT 或 DELETE

    该表列出了在实现 RESTful Web 服务时 HTTP 请求方法的典型用途。如下表所示:

    HTTP 请求方法在 RESTful Web 服务中的典型应用

    资源 GET PUT POST DELETE
    一组资源的 URI,
    如 http://example.com/resources/ 
    列出 URI 和该资源组中每个资源的详细信息 用给定一组资源替换当前整组资源 在本组资源中创建/追加一个新资源。
    该操作往往返回新资源的 URL。
    删除整组资源
    单个资源的 URI,
    如 http://example.com/resources/142   
    获取指定资源的详细信息,格式可以 XML、JSON 等 替换/创建指定资源,并将其追加到相应的资源组中 把指定资源当做一个资源组,并在其下创建/追加一个新资源 删除指定资源

    不像基于 SOAP 的 Web 服务,RESTful Web 服务并没有的“正式”标准。 因为 REST 是一种架构,而 SOAP 只是一个协议。虽然 REST 不是一个标准,但在实现 RESTful Web 服务时可以使用其他各种标准(比如HTTP,URL,XML,PNG等)。

    示例


    如一个简单的网络商店应用。如下所示列举所有商品:

    GET http://www.store.com/products

    如下所示具体某一件商品:

    GET http://www.store.com/product/12345

    如下所示下单购买:

    POST http://www.store.com/order
    <purchase-order>
      <item> ... </item>
    </purchase-order>
     

    REST 优点


    • 利用缓存 Cache 提高响应速度
    • 无状态性使不同服务器处理一系列请求,提高服务器扩展性
    • 浏览器即可作为客户端,简化软件需求
    • 相对于其他叠加在 HTTP 协议之上的机制,REST 软件依赖性更小
    • 不需要额外的资源发现机制
    • 在软件技术演进中兼容性更好

    参考


  • 相关阅读:
    新浪推出开放云计算平台Sina App Engine
    摄像机标定
    Qt开发环境大全
    [转]卡尔曼滤波器
    Qt Creator:跨平台 IDE
    建立交叉编译的Qt/Embeded开发环境
    Linux mmap
    QtCreator在不同平台开发的程序的运行
    粒子滤波概述
    13、几点小结,unsigned long long
  • 原文地址:https://www.cnblogs.com/liuning8023/p/2587878.html
Copyright © 2020-2023  润新知