REST架构风格

前段时间第一次从同事那里听说了REST这个概念,当时是听的一头雾水,直到现在我觉得自己也不能说已经理解这个概念了,而且我觉得更主要的是观念的转变。关于什么才是实现异构的应用到应用通信的“正确”方式,一场争论正进行的如火如荼:当前主流的方式集中在基于SOAP、WSDL和WS-*规范的Web Services领域,现在开始有小部分人主张说更好的方式是REST,表述性状态转移(REpresentational State Transfer)的简称。 网上介绍REST的文章不少,不了解的可以搜搜看。

 

REST的几条关键原则列举如下:

 

1.为所有“事物”定义ID

对事物使用一致的命名规则(naming scheme)最主要的好处就是你不需要提出自己的规则——而是依靠某个已被定义,在全球范围中几乎完美运行,并且能被绝大多数人所理解的规则。如果在一个类似于Amazon.com的在线商城中,没有用唯一的ID(一个URI)标识它的每一件商品,可想而知这将是多么可怕的业务决策。 下面是一些你可能想到的URI的例子:

http://example.com/customers/1234
http://example.com/orders/2007/10/776654
http://example.com/orders/2007/11

2.将所有事物链接在一起
任何可能的情况下,使用链接指引可以被标识的事物(资源)。也正是超链接造就了现在的Web。
3.使用标准方法
GET、POST、DELETE、PUT
4.资源多重表述
针对不同的需求提供资源多重表述,客户端可以请求返回指定格式的资源如xml
上面的内容来源于http://www.infoq.com/cn/articles/rest-introduction
英文地址http://www.infoq.com/articles/rest-introduction

还有一篇文章Build RESTful web services using Spring 3介绍了如何利用spring 3构建REST风格应用。

下面借用下上篇文章的例子介绍下如何在Spring3下搭建REST应用,首先在web.xml
配置contextConfigLocation

 

下面是在rest-servlet.xml中配置Spring MVC


 

 

Listing 3. EmployeeController控制器类


 

 

Listing 4. EmployeeController in dw.spring3.rest.controller

 

 

Listing 5. getAllEmployees in EmployeeController


 

Listing 6. EmployeeList class in dw.spring3.rest.bean




Listing 7. Define content negotiation


 

Listing 8. employees.jsp in /WEB-INF/jsp

 

 

下面演示Clients如何与 REST services交互


curl –HAccept:application/xml http://localhost:8080/rest/service/employees

 

下面返回的xml包含employees

 

Figure 2. 用浏览器打开的HTML展示


 

 

下面演示创建一个新的employee到服务端,

 

这样一个新的employee注册好了. 可以用第一个例子的 employee 列表验证下.

PUT 和POST方法类似.

 

 

上面代码更新了编号为3的 employee 数据。

 

现在spring3的mvc层以及完全支持REST了,你可以很轻松的用Spring APIs和注解去构建RESTful web services.

 

原文链接地址Build RESTful web services using Spring 3

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值