URI 和 URL
与 URI 相关的概念还有 URL,URL 是
Uniform Resource Locator,也就是统
一资源定位符的意思。其中
http://www.crazyit.org 就是一个统一资
源定位符,URL 是 URI 的子集。简而
言之:每个 URL 都是 URI,但不是每
个 URI 都是 URL。
级别: 初级
李 刚, 自由撰稿人
2009 年 8 月 28 日
从 V2.1 开始,Struts 2 开始提供 Convention 插件,它允许根据“约定”来搜索 Action,以及管
理 Action 和 Result 的映射。另外,Struts 2.1 还提供了 REST 插件,使 Struts 2 可以支持
Rails 风格的 URL,以对外提供 REST 风格的资源服务。本文作者通过代码示例演示了这些
特性。
REST 简介
REST 是英文 Representational State Transfer 的缩写,这个术语由 Roy Thomas Fielding 博士在他的论文
《Architectural Styles and the Design of Network-based Software Architectures》中提出。从这篇论文的标
题可以看出:REST 是一种基于网络的软件架构风格。
提示:国内很多网络资料将 REST 翻译为“表述性状态转移”,不过笔者对这个翻译不太认同。因为这个专
业术语无法传达 REST 的含义,读者可以先不要理会 REST 到底该如何翻译,尽量先去理解 REST 是什
么?有什么用?然后再来看这个术语的翻译。关于 Roy Thomas Fielding 博士的原文参见如下地
址:http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm。
REST 架构是针对传统 Web 应用提出的一种改进,是一种新型的分布式软件设计架构。对于异构系统如
何进行整合的问题,目前主流做法都集中在使用 SOAP、WSDL 和 WS-* 规范的 Web Services。而
REST 架构实际上也是解决异构系统整合问题的一种新思路。
如果开发者在开发过程中能坚持 REST 原则,将可以得到一个使用了优质 Web 架构的系统,从而为系统
提供更好的可伸缩性,并降低开发难度。关于 REST 架构的主要原则如下:
网络上的所有事物都可被抽象为资源(Resource)。
每个资源都有一个唯一的资源标识符(Resource Identifier)。
同一资源具有多种表现形式。
使用标准方法操作资源。
通过缓存来提高性能。
对资源的各种操作不会改变资源标识符。
所有的操作都是无状态的(Stateless)。
仅从上面几条原则来看 REST 架构,其实依然比较难以理解,下面笔者将从如下二个方面来介绍 REST。
资源和标识符
现在的 Web 应用上包含了大量信息,但这些信息都被隐藏在 HTML、CSS 和 JavaScript 代码中,对于普
通浏览者而言,他们进入这个系统时无法知道该系统包含哪些页面;对于一个需要访问该系统资源的第三
方系统而言,同样无法明白这个系统包含多少功能和信息。
从 REST 架构的角度来看,该系统里包含的所有功能和信息,
都可被称为资源(Resource),REST 架构中的资源包含静态
页面、JSP 和 Servlet 等,该应用暴露在网络上的所有功能和信
息都可被称为资源。
除此之外,REST 架构规范了应用资源的命名方式,REST 规
定对应用资源使用统一的命名方式:REST 系统中的资源必须
统一命名和规划,REST 系统由使用 URI(Uniform Resource
Identifier,即统一资源标识符)命名的资源组成。由于 REST
对资源使用了基于 URI 的统一命名,因此这些信息就自然地暴
露出来了,从而避免 “信息地窖”的不良后果。
对于当今最常见的网络应用来说,资源标识符就是 URI,资源的使用者则根据 URI 来操作应用资源。当
URI 发生改变时,表明客户机所使用的资源发生了改变。
评论8
最新资源