REST之前:Programmable Web

image
image

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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,309评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,378评论 25 709
  • 一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式。”但是在要求详细讲述它所提出的各个约束,以及如...
    时待吾阅读 3,577评论 0 19
  • 文/曹不苦 记得,第一次接触美国作家弗·司各特·菲茨杰拉德的《了不起的盖茨比》这本书时,还在念高三,书是同桌的,内...
    曹不苦阅读 739评论 3 11
  • 一、阅读:今天晨读文章分享的内容是快速成功的三个方法, 1、利用平台,提高效率。平台的形式可以是工具、技术、资源。...
    小螃谢阅读 294评论 0 0

友情链接更多精彩内容