java url使用rest风格_Restful风格的URL请求

SpringMVC的URL请求的配置方式有两种

第一种方式:.do,.action 类似于 /user/addUser.do /user/addUser.action

第二种配置方式:/* 类似于/user/addUser /user/delUser

注意:第二种方式其实是包含第一种方式,但是当我们的页面包含静态资源文件.js,.image,.css 的时候 springMVC 会将他们认为是一个 url 请求去匹配,结果 404。*

怎么解决?

三种方式:

一:在springmvc.xml配置文件里面配置:

mvc:resources>

二:在springmvc.xml配置文件里面配置:

三:在web.xml配置:

defaultservlet-name>

*.jsurl-pattern>

servlet-mapping>

ps:实际应用中第一种方式比较常见,因为后两种方式使用的是容器默认的 servlet,不同的容器默认的 servlet 不同,实际项目部署时多用 WebLogic,WebSphere。Tomcat 多用于开发。为了防止部署的时候出现差错,所以一般用第一种方式。

Restful是什么

中文名称:表现层状态转化。用 URL 表示要操作的资源,用不同的 HTTP 请求(GET,POST,PUT,DELETE)描述对资源的操作,通过 HTTP 的状态码来判断此次对资源操作的结果,这就是 Restful风格。

其实 Restful 风格是对请求的一次解耦,提高了 url 的重用性。

状态转化:客户端通过 http 协议访问服务端资源,通过 http 协议里面定义好的四个动词:GET POST PUT DELETE 来讲资源进行状态转化。

GET 用来获取资源

POST 用来新增资源

PUT 用来更新资源

DELETE 用来删除资源

put和delete虽然是http协议的规范 ,但是遗憾的是,所有的无论是html4还是h5都不支持,所以我们在实际开开发过程当中要模拟这两种状态。

普通的URL开发方式 :http://qujianlei.com/getUserList addUser deleteUser updateUser

Restful风格的URL:

http://qujianlei.com/users/ method = “get” 获取用户列表

http://qujianlei.com/user method = “post” 更新用户

http://qujianlei.com/user method=“delete” 删除用户

http://qujianlei.com/user method = “put” 新增用户

Restful怎么实现

SpringMVC 提供了对 restful 风格很友好的支持。

支持无后缀的 uri 匹配,是一种很优雅的 restful 风格的 URI。

对于 html 不支持的 delete 和 put 两种提交方式,提供了一个过滤器进行转化:设置一个 _method = delete / put 的元素,通过 springmvc 提供的过滤器, 能够将他转化成 http 协议的 delete 和 put 提交方式 ,可以在 springmvc 的 @RequestMapping 注解里面获取。

像下面这样来模拟 put 和 delete 两种方式: url :'/user/'+userId+'?_method=delete'

url :'/user/'+userId+'?_method=put'

a:配置 HiddenHttpMethodFilter 过滤器

hiddenHttpMethodFilterfilter-name>

org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>

filter>

hiddenHttpMethodFilterfilter-name>

/*url-pattern>

filter-mapping>

b:在 @RequesetMapping 注解用指定 method 的方式来匹配 url /**

* restful风格的用户列表

* @return

*/

@RequestMapping(value="/users",method = RequestMethod.GET)

public @ResponseBody List getUserListRestful(){

List userList = userService.getUserList(new User());

return userList;

}

c:对于 http://qujianlei.com/user/1 带参数的这种方式,需要用 @PathVariable 注解来接收 /**

* restful风格的删除

* @param userId

* @return

*/

@RequestMapping(value="/user/{userId}" ,method = RequestMethod.DELETE)

public @ResponseBody Map userDelRestful(@PathVariable("userId") Long userId){

Map resultMap = new HashMap();

if(userId!=null){

if(userService.delUser(userId)){

resultMap.put("result", "删除用户成功") ;

}else{

resultMap.put("result", "删除用户失败");

}

}

return resultMap;

}

Restful有什么意义

网络上的所有的信息体都看作一种资源,对网络资源的某种操作,都是通过 method 来确定的。

对于现在的数据或者资源提供方,对外透露的接口一般是 restful 风格的,有利于不同系统之间的资源共享,而且只需要遵守规范不需要做另外的配置就能达到资源共享。

这是豆瓣提供的一个 restful 风格的 URL :https://api.douban.com/v2/book/2129650

获取到的 json 格式的数据如下:

{"rating":{"max":10,"numRaters":16,"average":"7.4","min":0},"subtitle":"","author":["廖雪峰"],"pubdate":"2007","tags":[{"count":21,"name":"spring","title":"spring"},{"count":13,"name":"Java","title":"Java"},{"count":6,"name":"javaee","title":"javaee"},{"count":5,"name":"j2ee","title":"j2ee"},{"count":4,"name":"计算机","title":"计算机"},{"count":4,"name":"编程","title":"编程"},{"count":3,"name":"藏书","title":"藏书"},{"count":3,"name":"POJO","title":"POJO"}],"origin_title":"","image":"https://img3.doubanio.com\/view\/subject\/m\/public\/s2552283.jpg","binding":"平装","translator":[],"catalog":"","pages":"509","images":{"small":"https://img3.doubanio.com\/view\/subject\/s\/public\/s2552283.jpg","large":"https://img3.doubanio.com\/view\/subject\/l\/public\/s2552283.jpg","medium":"https://img3.doubanio.com\/view\/subject\/m\/public\/s2552283.jpg"},"alt":"https:\/\/book.douban.com\/subject\/2129650\/","id":"2129650","publisher":"电子工业出版社","isbn10":"7121042622","isbn13":"9787121042621","title":"Spring 2.0核心技术与最佳实践","url":"https:\/\/api.douban.com\/v2\/book\/2129650","alt_title":"","author_intro":"","summary":"本书注重实践而又深入理论,由浅入深且详细介绍了Spring 2.0框架的几乎全部的内容,并重点突出2.0版本的新特性。本书将为读者展示如何应用Spring 2.0框架创建灵活高效的JavaEE应用,并提供了一个真正可直接部署的完整的Web应用程序——Live在线书店(http:\/\/www.livebookstore.net)。\n在介绍Spring框架的同时,本书还介绍了与Spring相关的大量第三方框架,涉及领域全面,实用性强。本书另一大特色是实用性强,易于上手,以实际项目为出发点,介绍项目开发中应遵循的最佳开发模式。\n本书还介绍了大量实践性极强的例子,并给出了完整的配置步骤,几乎覆盖了Spring 2.0版本的新特性。\n本书适合有一定Java基础的读者,对JavaEE开发人员特别有帮助。本书既可以作为Spring 2.0的学习指南,也可以作为实际项目开发的参考手册。","price":"59.8"}

我们在后台获取到了这些数据之后,再通过一些 json 解析包,像:fastjson,gson…就可以把获取到的数据转换成 java 对象,然后再进行数据库的一些增删改查操作。

restful 是用来外提供接口的,主要用于在不同的系统之间进行数据的交互。

ps:其实在做内部系统的时候并不会使用 restful 风格的 url 请求,只用普通的 @RequestMapping 来匹配请求就行了。

关注我的微信公众号(曲健磊的个人随笔),观看更多精彩内容:

博主最近也入驻了 GitChat 这个全新的知识分享平台,在这个平台博主会发布一些更有价值的内容,欢迎大家关注我:曲健磊的GitChat

参与评论 您还未登录,请先 登录 后发表或查看评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页

打赏作者

weixin_39594895

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值