如何保持交互的可见性
作为应用协议,HTTP的设计目标是在客户端和服务器之间保持对库、服务器、代理、缓存和其他工具的可见性。可见性是 HTTP的一个核心特征。按 Roy Fielding的定义(详见附录 A),可见性是“一个组件能够对其他两个组件之间的交互进行监视或仲裁的能力。”当协议是可见的时,缓存、代理、防火墙等组件就可以监视甚至参与其中。
问题描述
您想知道可见性的含义,以及如何保持 HTTP请求和响应的可见性。
解决方案
一旦您识别并设计资源,就可以使用 GET方法获取资源的表述,使用 PUT方法更新资源,使用 DELETE方法删除资源,以及使用 POST方法执行各种不安全和非幂等的操作。可以添加适当的 HTTP标头来描述请求和响应。
问题讨论
以下特性完全取决于保持请求和响应的可见性:
缓存
缓存响应内容,并在资源修改时使缓存自动失效。
乐观并发控制
检测并发写入,并在操作过期的表述时防止资源发生变更。
内容协商
在给定资源的多个可用表述中,选择合适的表述。
安全性和幂等性
确保客户端可以重复或重试特定的 HTTP请求。
当一个 Web服务无法保持可见性时,以上这些功能将无法正常工作。例如,当服务器对 HTTP的使用方式阻碍乐观并发时,您可能要被迫自己实现应用特定的并发控制机制。
HTTP通过以下途径来实现可见性:
� HTTP的交互是无状态的,任何 HTTP中介都可以推断出给定请求和响应的意义,而无须关联过去或将来的请求和响应。
� HTTP使用一个统一接口,包括有 OPTIONS,GET,HEAD,POST,DELETE和 TRACE方法。接口中的每一个方法操作一个且仅有一个资源。每个方法的语法和含义不会因应用程序或资源的不同而发生改变。这就是为什么 HTTP以统一接口而闻名于世了。
� HTTP使用一种与 MIME类似的信封格式进行表述编码。这种格式明确区分标头和内容。标头是可见的,除了创建、处理消息的部分,软件的其他部分都可以不用关心消息的内容。
考虑一个更新资源的 HTTP请求:
# 请求
PUT /movie/gone_with_the_wind HTTP/1.1 ❶
Host: www.example.org ❷
Content-Type:application/x-www-form-urlencoded
summary=...&rating=5&... ❸
# 响应
HTTP/1.1 200 OK ❹
Content-Type: text/html;charset=UTF-8 ❺
Content-Length: ...
<html> ❻
...
</html>
❶ 请求行包含HTTP 方法、资源路径和HTTP 版本
❷ 请求的表述形式标头
❸ 请求的表述内容
❹ 响应状态行包含HTTP 版本、状态码和状态消息
❺ 响应的表述形式标头
❻ 响应的表述内容
这个例子的请求是一个HTTP消息。消息的第一行描述了客户端所使用的协议和方
法,接下来的两行是请求头。简单查看这三行信息,任何理解 HTTP的软件都可以明白请求的意图以及如何解析消息体。响应也是同样的,响应的第一行表示 HTTP版本、状态码和状态消息,接下来的两行告诉 HTTP软件如何解释消息。
对于 RESTfulWeb服务,您的主要目标必定是尽最大可能保持可见性。保持可见性非常简单,使用 HTTP方法时,其语义要与 HTTP所规定的语义保持一致,并添加适当的标头来描述请求和响应。
保持可见性的另一方面是使用适当的状态码和状态消息,以便代理、缓存和客户端可以决定请求的结果。状态码是一个整数,状态消息是文本。
正如我们将在 1.2节讨论的内容一样,在某些情况下,您可能需要权衡其他特性,如网络效率、客户端的便利性以及分离关注点,为此放弃可见性。当您进行这种权衡时,应仔细分析对缓存、幂等性、安全性等特性的影响。
本文节选自《RESTful Web Services Cookbook中文版》一书
图书详细信息:http://blog.csdn.net/broadview2006/article/details/6826999
分享到:
相关推荐
此处提供的开源版本是更高级且功能齐全的 Pro 版本的缩小、简化版本,其中包括可变带宽流以实现最佳用户体验以及共同浏览以启用实时交互支持等用例并使用共享浏览器进行培训。 因为它支持 RBI 和 CBII,所以 ...
使用浮动标签有许多优点,当用户聚焦于字段并输入内容之后,仍可保持上下文信息可见。这带来了更好的可访问性。在默认情况下可以保持简洁,便于视线扫描。这种模式在默认情况下就是原来的内联标签,只有当用户产生...
特征:-从树中的任何位置折叠整个评论线程-快速查看评论中有多少个子评论-隐藏/显示子评论,同时保持父评论的展开-自定义Hacker News是否记得您折叠了评论设置:轻松切换可见性动作的行为。 更改折叠动作的工作方式...
为了与边界保持一致,它们必须是隐藏扇区的一部分,这些扇区与标准模型的交互作用要弱于普朗克抑制作用。 我们考虑这样的场景,其中可见扇区的自由度在压实中局部化,而光模量随着与标准模型在几何上分开(在额外...
镜像双希格斯框架允许自然的希格斯质量,同时与彩色对称伙伴到标准模型夸克的对撞机边界保持一致。 该机制至关重要地依赖于离散对称性,该对称性将每个标准模型字段与镜像伙伴相关联。 这些合作伙伴按照与标准模型...
5. **适应性设计**:考虑到不同设备的访问需求,网站可能采用了响应式设计,确保在各种屏幕尺寸和分辨率下均能保持良好的访问体验。 6. **后台管理系统**:除了面向公众的前端页面外,还可能配备了后台管理系统,...
置顶导航:在页面的顶部设置一个固定位置的导航栏,在用户滚动页面时保持导航栏始终可见,方便用户快速浏览和访问网站其他页面。 视频播放:在首页适当位置插入一个视频播放器,用于展示相关的宣传视频或产品介绍...
1、提供尽可能详尽而有效的网络营销信息源 2、建立尽可能多的网络营销信息传递渠道 3、尽可能缩短信息传递渠道 4、保持信息传递的交互性 5、充分提高网络营销信息传递的有效性 网络的类型:品牌,产品,服务,营销...
1、提供尽可能详尽而有效的网络营销信息源 2、建立尽可能多的网络营销信息传递渠道 3、尽可能缩短信息传递渠道 4、保持信息传递的交互性 5、充分提高网络营销信息传递的有效性 网络的类型:品牌,产品,服务,营销...
温控系统在人们生活中随处可见,在生物制药、冶金、医疗等领域扮演着非常重要的角色,已经成为人们生活不可或缺的一部分。它是一个集环境监测、反馈调节和人机交互的等功能的综合系统。它是能实现实时环境温度数据...
2) 优异的搜索引擎可见性 100%有效的XHTML和CSS可良好满足搜索引擎和web浏览器的需要。Plone站点在Google的搜索结果中一直保持着很高的等级 3) 和其它系统良好集成 LDAP,SQL,SOAP,Web服务(WSDL)和WebDAV -Plone ...
简化整个组织内Chromebook的部署和持续管理•扩展iboss基于角色的Web安全和跨Chromebook的访问策略,无论它们是本地,旅行还是在家•启用基于目录用户的报告从单个玻璃管理控制台窗格中整个组织的威胁和威胁可见性•...
这意味着这些响应不会作为对测试客户端的响应发送,并且由于其性质,当客户端位于第三方NAT之后时,这些响应将保持不可见状态。 为了能够清楚地看到这些React,需要另外一块。 不受第三方NAT限制的部分,可以在...
java8集合源码 惊人的 我的软件、服务、教程、资源列表…… 灵感来自: 内容 ...安全地为他人提供他们需要的控制权和可见性。 - 基于 Web 的笔记本,支持使用 SQL、Scala 等进行数据驱动的交互式数据
某项工作进行抽象封装,使之对开发者不可见。本书将介绍各种概念,帮助读者理解 网络上各系统进行交互的困难之处,并介绍如何使用 Akka 提供的解决方案来解决这些 问题。 作者简介 Jason Goodwin 是一个基本上通过...
Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...
某项工作进行抽象封装,使之对开发者不可见。本书将介绍各种概念,帮助读者理解 网络上各系统进行交互的困难之处,并介绍如何使用 Akka 提供的解决方案来解决这些 问题。 作者简介 Jason Goodwin 是一个基本上通过...
该游戏将在视觉上变得简单,但吸引眼球并具有交互性。 该游戏将包括玩家,用户以及经销商和计算机对手。 游戏将使用一副纸牌,每张纸牌有两张发给玩家,两张都可见,两张发给发牌人,每张有一张。 在发牌时,玩家...
(2)危机原因:软件的不可见性,系统规模庞大,生产工程化程度低,对用户需求关心不 够,对维护不够重视,开发工具自动化程度低。 5.软件工程 软件工程:运用现代科学技术知识来设计并构造计算机程序及为开发、...