RESTful--一种网络应用程序的设计风格和开发方式

一、REST简介

1. 什么是REST

REST全称是Representational State Transfer,中文意思是表述性状态转移。它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。
他在论文中提到:“我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。”
如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。虽然REST本身受Web技术的影响很深, 但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。 所以我们这里描述的REST也是通过HTTP实现的REST。
2. REST规范
1) 定义资源的URL风格

http://127.0.0.1:8080/tour/user/1

2) 对资源的操作
采用HTTP协议规定的GET、POST、PUT、DELETE动作处理资源的增删改查操作。

二、什么是RESTful

符合REST约束风格和原则的应用程序或设计就是RESTful。

案例:
/user/1  HTTP GET      查询id=1的user

/user/1  HTTP DELETE    删除id=1的user,实验中直接删除会报405错误,但是采用$.ajax异步删除就没问题

/user/1  HTTP PUT    更新id=1的user

/user/add  HTTP POST     新增user

三、Spring对RESTful的支持

SpringMVC对RESTful应用提供以下支持:
1)利用@RequestMapping指定要处理请求的URI模板和HTTP请求的动作类型。
2)利用@PathVariable将URI请求模板中的变量映射到处理方法的参数上。
3)利用AJAX,在客户端发出PUT、DELETE动作的请求。

@RequestMapping应用
1)@RequestMapping可以定义在Controller类前和处理方法前,主要用于指定Controller的方法处理哪些请求。
2)在RESTful应用中,@RequestMapping可以采用如下格式:

@RequestMapping(value = "/{id}", method = RequestMethod.GET)

@RequestMapping(value = "/{id}", method = RequestMethod.POST)

@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)   // 因为这个需要Ajax请求,所有返回的是个json

@ResponseBody
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)

@PathVariable应用
1)@PathVariable作用是将URI请求模板中的变量解析出来,映射到处理方法中的参数上。
2)注解使用格式

 @RequestMapping(value = "/{id}", method = RequestMethod.GET)
 public String toUpdate(@PathVariable("id") Integer id, Model model) {}

利用AJAX,在客户端发出PUT、DELETE动作的请求

$.ajax({
	type: "PUT",
	url: "/tour/user/update",
	data: JSON.stringify("#formId").serializeObject()),
	dataType: "json",
	contentType: "application/json",
	success: function(data) {
		location.href = "/tour/user/list"; 
	}
 })

静态资源访问处理
1)采用RESTful架构后,需要将web.xml中控制器拦截的请求设置为"/",但是一旦设置后,将会拦截如css、js等静态资源,发生404错误。
2)解决静态资源访问处理

配置< mvc:resources />

<mvc:resources mapping="请求URI" location="资源位置" />

配置< mvc:default-servlet-handler />

<mvc:default-servlet-handler/> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值