当创建RESTful web服务时,需要解决设计时可发现性和运行时可发现性这两类可发现性。设计时可发现性有助于其他设计和创建客户端,它描述了客户端开发组和管理员用于构建和启动客户端的基本信息。运行时可发现性有助于维护客户端和服务器之间的松散耦合并使能即插即用式自动化。运行时可发现性解决了HTTP统一接口、媒体类型、链接和链接关系类型。本章是关于设计时可发现性的。

Read More

在任何分布式CS环境管理变化都是困难的。在这些环境中,客户端依赖服务器来遵守契约,RESTful web服务也不例外。对于web服务,契约包含URI、资源、表述的结构和内容、格式及对每个资源所用的HTTP方法。任何对服务器的改变在向后兼容之前似乎都是良性的。

Read More

一个基于Web的应用系统安全可能需要:

  1. 确保仅认证过的用户访问资源。
  2. 确保信息从采集到存储及之后展现给授权实体或用户过程中信息的可靠性和完整性。
  3. 防止未授权或恶意客户端滥用资源和数据。
  4. 维持私密性并符合当地安全法规。

Read More

缓存时构建HTTP统一接口之上的最有用的功能之一。可以利用缓存减少终端用户感知到的延时,增加可靠性,减少带宽使用和成本,降低服务器负载。缓存无处不在,可以在服务器网络里,内容分发网络(CDN)或是客户端网络里(通常被称作转发代理)。

Read More

查询信息是HTTP GET方法的一种常见应用,查询通常涉及三个组成部分,即过滤(filtering)、排序(sorting)和投影(projection)。过滤是基于一些过滤条件选择实体的一个子集的过程。排序会影响服务器是如何排列响应中结果的。投影是选择实体中哪些字段将被包含到结果的过程。只要关注URI和表述,查询设计还是相对简单的。客户端负责运行查询,服务器的职责包括设计URI来支持过滤、排序和投影,设计表述,设置合适的缓存头。

Read More

内容协商有时也称以为conneg,是当多种资源表述形式可用时为客户端选择资源的最佳表述。尽管内容协商经常与指示媒体类型优先级相关,它也能用于指示语言本地化、字符编码和压缩编码的优先级。

HTTP指定了两种内容协商:服务器驱动协商和代理驱动协商。服务器驱动协商使用request头选择一种变体,代理驱动协商为每一种变体使用不同URI。

Read More