[Java springMVC] Restf…

[Java springMVC] Restful风格API接口设计

Restful风格API接口开发springMVC篇 Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。


在Restful风格中,用户请求的url使用同一个url而用请求方式:get,post,delete,put...等方式对请求的处理方法进行区分,这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口。


在Restful风格中,现有规定如下:
GET(SELECT):从服务器查询,可以在服务器通过请求的参数区分查询的方式。 POST(CREATE):在服务器新建一个资源,调用insert操作。 PUT(UPDATE):在服务器更新资源,调用update操作。 PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。(目前jdk7未实现,tomcat7也不行)。 DELETE(DELETE):从服务器删除资源,调用delete语句。


了解这个风格定义以后,我们举个例子:
如果当前url是 http://localhost:8080/User
那么用户只要请求这样同一个URL就可以实现不同的增删改查操作,

例如:
http://localhost:8080/User?_method=get&id=1001  

这样就可以通过get请求获取到数据库 user 表里面 id=1001 的用户信息
http://localhost:8080/User?_method=post&id=1001&name=zhangsan  

这样可以向数据库 user 表里面插入一条记录
http://localhost:8080/User?_method=put&id=1001&name=lisi  

这样可以将 user表里面 id=1001 的用户名改为lisi
http://localhost:8080/User?_method=delete&id=1001  

这样用于将数据库 user 表里面的id=1001 的信息删除


这样定义的规范我们就可以称之为restful风格的API接口,我们可以通过同一个url来实现各种操作。


接下来我们讲解spring-mvc中是如何实现restful风格API接口的,并且对其中出现的问题进行解决!(java web对 put 和 delete 请求的不支持问题)


首先我们搭建好spring mvc的项目接口,并按照restful风格写好控制器,这里我写了一个User控制器类和一个User "Action" ->

 

[Java <wbr>springMVC] <wbr>Restful风格API接口设计 <wbr>一


这里的controller 和 action的url地址是按照restful风格编写的 访问地址 /User/User 用method区分请求方法
我们的前台使用的是jquery ajax进行请求->

 

 

 

 

[Java <wbr>springMVC] <wbr>Restful风格API接口设计 <wbr>一

[Java <wbr>springMVC] <wbr>Restful风格API接口设计 <wbr>一

[Java <wbr>springMVC] <wbr>Restful风格API接口设计 <wbr>一

[Java <wbr>springMVC] <wbr>Restful风格API接口设计 <wbr>一

 

 

 


有人会问了? 为什么delete 和put用的也是post的请求,这里就要说说java里面对put和delete的不支持了->
java里面原本是对put和delete请求进行过滤掉的(不知道为什么要这么做),而且在servlet里面还有doGet,doPost,doDelete,doPut的对应方法,但是不可以使用(尴尬不尴尬),同样spring mvc里面也有对应的method=RequestMethod.PUT 和Delete,但是ajax里面type写成Put、Delete是可以访问到对应的方法的,但是参数却无法传递过去,所有传递过去的参数都是null(郁闷不郁闷)!C#就不会这样,C#的API编程需要开启一下PUT和Delete就可以了,并不需要java里面这么复杂,说到这里我们解决一下这个问题->
首先在springMVC 项目的Web.xml里面增加一个过滤器filter

1

2<</span>filter>

3<</span>filter-name>hiddenHttpMethodFilter</</span>filter-name>

4<</span>filter-class>

     org.springframework.web.filter.HiddenHttpMethodFilter

  </</span>filter-class>

5</</span>filter>

6<</span>filter-mapping>

7<</span>filter-name>hiddenHttpMethodFilter</</span>filter-name>

8<</span>url-pattern>/*</</span>url-pattern>

9</</span>filter-mapping>


当然有些新手不知道这段代码加在哪里,那么我就将我的web.xml一并粘贴在此处(我也搞这个半天...) 

本文为七小站主原创作品,转载请注明出处:http://www.cnblogs.com/qixiaoyizhan/ 且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值