标题 | 浅谈基于SpringMVC的REST功能 |
范文 | 宋涛+徐庆增+吕思思 摘要:数据为王。作为开发人员,我们经常关注于构建优秀的软件来解决业务问题。数据只是我们软件完成工作时要处理的原材料。但是如果你问一下业务人员,数据和软件哪个更重要的话,他们很可能会选择数据。数据是许多业务的命脉。软件通常是可以替换的,但是多年积累的数据是永远不能替换的。近几年来,以信息为中心的表述性状态转移(Representational State Transfer,REST)已成为替换传统SOAP web服务的流行方案,为了帮助spring开发人员使用REST架构模式,spring3.0封装了对REST的良好支持。好消息是Spring对REST的支持是构建在SpringMVC之上的,我们将基于了解的SpringMVC知识来开发处理RESTful资源的控制器。 关键词:Spring MVC;REST; 表述性状态转移 中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)12-0086-02 1了解REST 我敢打赌这并不是你第一次涉及或读到REST。近年来,关于REST已经有了许多讨论,在软件开发中你可能会发现有一种很流行的做法。那就是在推动REST替换SOAP web服务的时候,会谈论到SOAP的不足。 诚然,对于许多应用程序而言,使用SOAP可能会有点大材小用了,而REST提供了一个更简单的可选方案。问题在于并不是每个人都清楚地了解REST到底是什么。结果就出现了许多误解。在谈论Spring如何支持REST之前,我们需要对REST是什么达成共识。 2 REST的基本原理 当谈论REET时,有一种常见的错误就是将其视为“基于URL的Web服务”——将REST作为另一种类型的远程过程调用(Remote Procedure Call,RPC)机制,就像SOAP一样,只不过是通过简单的HTTP URL而不是SOAP的大量XML命名空间来触发。 恰好相反,REST与RPC几乎没有任何关系,RPC是面向服务的,并关注与行为和动作。而REST是面向资源的,强调描述应用程序的食物和名词。 此外,尽管URL在RSET中起了关键作用,但他们仅仅是整体的一部分而已。 为了了解REST是什么,我们将它的首字母缩写拆分为不同的组成部分。 1) 表述性(Representational)——REST资源实际上可以用各种形式来进行表述,包括XML,JSON(JavaScript Objict Notation)甚至HTML——最适合资源使用者的任意形式。 2) 状态-(State)—— 当使用了REST的时候,我们更关注资源的状态而不是对资源采取的行为。 3) 转移(Transfer)——REST涉及转移资源数据,它以某一种表述性形式从一个应用转移到了一个应用。 更简洁的讲,REST就是将资源的状态已最合适的形式从服务器端转移到客户端(或者反之)。 基于对REST的这种观点,我尽量避免使用诸如REST服务,REST Web服务或类似的术语,这些术语会不恰当地强调行为。相反,我更愿意强调REST面向资源的本质,并谈论RESTful资源。 3 Spring是如何支持REST的 Spring很早就有导出REST资源的需求。Spring3对Spring MVC的一些增强功能为REST的提供了良好的支持。现在,Spring支持以下方式来开发REST资源。 1) 控制器可以处理所有的HTTP方法,包含4个主要的REST方法:GET,PUT,DELETE,以及POST. 2) 新的@pathVariable注解使得控制器能够处理参数化的URL(将变量输入作为URL的一部分) 3) Spring的表单绑定JSP标签库的 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。