RestFul简介以及在springmvc中的应用
2016-05-05 17:22
417 查看
什么是rest?
什么是rest?当我看到这个词的时候,我也不知道,我还以为是休息,最后查了一下,做web开发必须要知道rest好了,就来简单介绍一下rest
rest即Representational State Transfer,表现层状态转化
互联网上资源(是服务)细化理解为一个url,如果访问某个资源通过http url访问。
我们把”资源”具体呈现出来的形式,叫做它的”表现层”(Representation)
表现层对用户展示的形式:html、json、xml、pdf、图片。。
由于http协议的限制,服务器和客户端不能实现主动通信,只能有客户端发起请求服务端响应请求,也就是将请求方法和参数都包含url,
使用rest和不使用rest的规则都是这样做的,但是rest对于url做了很好的规划,这个规则将方法和资源分开看起来做的很简单,但是却使我们更好理解了,上网无非就是对于网络资源的操作,网络资源在internet中直白点说就是url(个人理解)所以如果客户端想要操作服务器,必须通过某种手段,让服务器端发生”状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是”表现层状态转化”。
GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源
RESTful就是对http最全面最好的诠释,RESTful就是进行互联网开发的理念、思想。
RESTful开发中url的规范:
1、url规范
原始url:http://www……/queryItems.action?type=101&id=111…规范后:http://wwww…/item/101/1
比如:
对商品查询
url:http://wwww…/item/101/1 表示对101分类 下的1号商品查询
http请求方法设置为get
比如:
对商品删除
url:http://wwww…/item/101/1表示对101分类 下的1号商品删除
http请求方法设置为delete
rest向客户端发送数据
在请求时指定服务端给客户端响应的内容类型是什么?实现:在请求时设置http头中Accept
对商品查询,以json格式展示:
rest设置:
url为:http://wwww…/item/101/1
客户端请求此url并且设置Accept为”applicatoin/json”
服务端处理方法:
接收请求,解析Accept,根据指定类型返回不同的内容格式。
如果解析到Accept为”applicatoin/json”,服务端就将内容转成json输出
如果解析到Accept为”applicatoin/xml”,服务端就将内容转成xml输出
RESTful架构的特点:
综合上面的解释,我们总结一下什么是RESTful架构:(1)每一个URI代表一种资源;
实现:
规范后的url规范后:http://wwww…/item/101/1,特点是参数通过url传递。
(2)客户端和服务器之间,传递这种资源的某种表现层;
实现:
服务端解析Accept,根据客户端的要求将内容进行输出。
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。
实现:
服务解析客户端请求的http方法,根据不同的方法执行不同的service操作。
rest在spingmvc中实际操作
1.首先在web.xml中配置支持rest风格的前端控制器,即过滤所有路径
<!-- 配置springmvc的rest风格的url解析, --> <servlet> <servlet-name>springmvc-rest</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 初始参数 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc-rest</servlet-name> <!-- 注意这个是重点 --> <url-pattern>/</url-pattern> </servlet-mapping>
编写支持rest的controler方法,使用注解完成,简单:
package com.leige.controler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.leige.domain.Student; import com.leige.service.StudentService; @Controller @RequestMapping("/rest") public class RestControler { //注入service @Autowired @Qualifier(value="studentService") StudentService studentService; /** * @param sid * @return返回json * * * @PathVariable将url中的路作为参数赋给方法 * ,注意路径使用占位符 */ @RequestMapping(value="/testRest/{sid}") public @ResponseBody Student testRest(@PathVariable("sid")Integer sid){ return studentService.selectStudent(sid); }; }
测试结果:
重要的是理解rest的设计思想,rest的思想讲解:http://www.ruanyifeng.com/blog/2014/05/restful_api.html
相关文章推荐
- java-用HttpURLConnection发送Http请求.
- 氪周刊:关注互联网创业
- 据说程序员才会看懂的趣图……
- 数据中心和云未来的十二大趋势
- 《互联网运营智慧》十一月进展
- 互联网业内的迷雾 谨慎选择虚拟主机
- 互联网应用广泛 电子商务正当时
- 风雨历练十四年 互联网引领信息化
- 观察:中小网站将渐渐成为互联网的主角
- VBScript 剪贴板抓取URL并在浏览器中打开
- 互联网迅猛崛起 IDC能否迎来发展高峰期
- 用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
- asp获取URL参数的几种方法分析总结[原创]_应用技巧_脚本之家
- C#实现在网页中根据url截图并输出到网页的方法
- zend framework框架中url大小写问题解决方法
- url decode problem 解决方法
- php url地址栏传中文乱码解决方法集合
- 探讨:parse url解析URL,返回其组成部分