REST之前:Programmable Web

作者: Gevin | 来源:发表于2014-04-21 21:33 被阅读374次
    imageimage

    REST架构风格的服务(或者它开放的api),属于Programmable Web。研究REST 架构风格,要从Programmable Web说起。

    Programmable Web一词来源于《Restful Web Services》,我觉得凭字面意思理解就好了。所谓的Programmable Web,可以理解为网站的内容源自服务器的资源,服务器上的所有资源都能够以某种方式提供给客户端,客户端的网站可以根据自己的需求设计每个页面,以及页面中可以显示的服务器端资源。从Programmable Web角度看,twitter是对twitter api编程产生的一个产品;新浪微博的官方网站,第三方客户端和应用等也都是基于新浪微博api编程产生的一系列的产品。

    组成部分

    Programmable Web主要由三部分组成:HTTP,Method Information(方法信息)和作用域(Scoping Information)。

    HTTP

    我们谈论的是web,web上少不了http。(http详情可以参考wikipedia

    对于Programmable Web而言,客户端要获得服务器上的资源,需要发起一个http request,服务器接收客户端的请求并作出反馈会给客户端发送一个http response,http request和http response都要封装到envelope中传输

    http request的主要组成

    • http method
      GET,POST,这些又被称为http动词,用于指示客户端期望服务器如何处理http request

    • path
      URI中的hostname右边的部分,如 http://essay.igevin.info/2013/05/01/how-pm-know-tech.html 中的2013/05/01/how-pm-know-tech.html

    • request header
      request header是以 key:value(键值对) 形式描述的元数据信息(metadata)。HTTP协议中定义了一些标准的header,我们也可以添加自定义的http header

    • entity-body
      envelope中的信息正文。entity-body可以为空,如GET请求,不需要entity-body中的信息

    http response的主要组成

    • http response code
      response code告诉客户端向服务器请求的结果是成功,失败或者其他情况,如200表示成功, 301表示永久的重定向,404表示not found…… 详情请看这里

    • response header
      与上面相同

    • entity body or representation
      与上面相同。值得一提的是,这里的内容是贴有“标签”的(标签的内容会放在response header的元数据 content-type中)。这些标签会告诉浏览器如何处理这些response信息。例如,如果在 content-type中指明类型为 text/html,则浏览器会将这里的response信息解析为html文档,并渲染为web页面。常用的http content type 可以参考这个页面

    现在不同的web service在设计与实现时,对两个问题的解决差别很大,分别为如何传递 『Method Information』以及如何表达『Scoping Information』

    Method Information

    Method表达的是,客户端如何向服务器传达自己请求的操作是什么(create, delete, update or read?),或者服务器暴露出来的api对数据或者请求做怎样的处理。

    REST 架构风格利用HTTP method作为Method Information的载体。

    Scoping Information

    Scoping information表达了数据的选择。服务器应该对哪个数据集执行客户端的请求操作?为什么服务器要update(or get, delete, etc.)这个数据集,而不去update那个数据集?这些都是由Scoping information决定的。

    有些web service 会将Scoping Information封装到请求的envelope中,而RESTful架构风格直接将该信息暴露在url中。

    最后

    本文介绍了Programming Web的三个主要组成部分: http, method 和scope。由于不同的web service对method information和 scoping information的处理方式不同,架构风格可以分为 RESTful, RPC-Style及REST-RPC混合架构,这些架构有何不同,这里先挖个坑,后面填上~


    图片来源于网站 programming web(PS:与本文的『programming web』不是一回事 :P)

    相关文章

      网友评论

        本文标题:REST之前:Programmable Web

        本文链接:https://www.haomeiwen.com/subject/uunltttx.html