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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352

推荐阅读更多精彩内容

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