6.8.1 REST风格的URL

6.8.1 REST风格的URL

  • 摘要:http://new.51cSpring Frameowork 2入门经典》第6Spring Web流程,本章开始时先讨论了为什么对某些应用程序样式使用硬编码页面流程不是一个好的开发实践,然后介绍了贷款提交应用程序的一个样本工作流程作为使用SWF的一个示例。再然后本章介绍了SWF以及Web流程背后的概念。本节讲述的是REST风格的URL
  • 标签:RESTURLSpringSpring Frameowork 2入门经典
  • Oracle帮您准确洞察各个物流环节

    6.8 高级话题

    本章只是作为一个SWF的介绍,所以讨论的都是基础概念。有了这些信息,用户应该可以开始在自己的Java应用程序中使用SWF。但是,和其他的系统一样,SWF中有许多高级功能。本节将简要地介绍一些这样的功能以便为您进一步研究SWF提供一些补充要点。

    6.8.1 REST风格的URL

    代表性状态传输(Representational State TransferREST)(http://en.wikipedia.org/ wiki/Representational_State_Transfer)是一个完全基于HTTP的、用于构建Web服务的模型。理解REST意味着理解HTTP协议到底提供了什么。HTTP是访问Internet资源时普遍采用的协议,使用这个协议时不需要传输额外的消息,比如HTTP cookieSOAPREST是一种呈现应用程序的体系结构风格,而不是一个规范或标准,理解这一点十分重要。

    关于REST的文章有很多,因为对它和WS-*规范系列的比较已经激烈持续了一段时间。我希望您可以自己找到一些这样的文章来更好地理解REST,因为这些话题技术性很强,并且很快就变得十分深入。本章中没有足够的地方来讨论这些辩论。

    REST背后的思想是HTTP协议提供了访问Web服务所需的所有操作。最重要的HTTP操作是PUTGETPOSTDELETE,这些操作都被集成到HTTP协议的内部。经常有人把这些操作与数据库技术相关的CREATEREADUPDATEDELETE(CRUD)操作进行比较。根据REST盲从者(RESTafarian)的说法(http://en.wikipedia.org/wiki/RESTafarian),这些操作就是访问Web服务所需的全部内容。

    除了使用HTTP提供的简单操作以外,REST也使用了可读性很强的、易于理解的URL。例如,REST没有基于一个全是参数的复杂URL访问服务器,而是允许使用没有参数的、可读性好的、可被制作为书签的URL。这些URL是本节的基础。本章前面的示例使用的URL的样式如下:

  1. http://localhost:8080/pixweb-0.0.1/flow.htm?_flowExecutionKey=_cC5551A2
  2. 1-1DFC-6C5E-8849-8324D37C3389_k32C0031B-8640-A92F-D542-5642516AD23A

    REST没有使用这种让人难以读懂(并且显然没什么意义)URL,而是使用了很简单的URL,如下所示:

  3. 这种URL看上去更加简单。现在看一下如何使用这种URL来配置应用程序。

    通常,隐藏的输入元素被用来保存流程执行ID,如下所示:

  4. form:form>
  5. ...
  6. "hidden"name="_flowExecutionId"value="
  7. ${flowExecutionKey}"/>
  8. "button"name="_eventId_submit"value="Login"/>
  9. 简单介绍术语"Web服务"

    当在REST范围内讨论Web服务时,Web服务(web service)这个术语表示的是其最一般的意义,它指的是所有可以通过HTP访问的应用程序--通常使用XML作为数据的有效负载格式。当在WS-*规范系列范围内讨论Web服务时,Web服务这个术语表明使用了SOAP消息传输协议。Web服务这个术语的两种定义随着时间逐渐出现,它们很容易让人混淆。

    这两种定义的区别看上去非常细微,但是却非常重要。真正的区别在于REST样式的Web服务和WS-*样式的Web服务提供的底层操作。Web服务的REST样式通过4HTTP操作呈现出来,而Web服务的WS-*样式则通过定义在Web服务的WSDL定义中的自定义操作呈现。

    开始使用SWF的人很快就会注意到SWF生成的URL的可读性不强,因而很难被制成书签。幸好SWF的体系结构设计者认识到了这个问题,从而提供了一种方法来避开这个问题。

    但是还有一种更好的方法。通过使用RequestPathFlowExecutorArgumentHandler类可以实现REST样式的URL。这个类的配置必须被添加进webflow.config文件,如下所示:

  10. "/flow.htm"class=
  11. "org.springframework.webflow.executor.mvc.FlowController">
  12. "flowExecutor"ref="flowExecutor"/>
  13. "argumentHandler">
  14. class=
  15. "org.springframework.webflow.executor.support.RequestPath
  16. FlowExecutorArgumentHandler"
  17. />
  18. 这样您的应用程序的URL的可读性就更强。下面是一个示例:

  19. 相对在URL中使用难以理解的流程ID和许多键/值对而言,这是一个很大的改进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值