RESTFUL是什么?

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

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

对于前端人员来说,他是一个统一的接口,

比如这个请求http://localhost/project/user?method=get&id=1

对应到Controller里面的下面的配置

@RequestMapping(value="user",id,method=get)
public getUser(id){}

比如这个请求http://localhost/project/user?method=delete&id=1

@RequestMapping(value="user",id,method=delete)
public deleteUser(id){}

这和之前的非restful的写法是不同的,对于前端开发人员来说,他看到的是统一的接口,只是通过方法名来区分

了解这个风格定义以后,我们举个例子:

如果当前url是 http://localhost:8080/User

那么用户只要请求这样同一个URL就可以实现不同的增删改查操作,例如

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

有人会问了? 为什么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

浏览器不支持put,delete等method,由该filter将/xxx?_method=delete转换为标准的http delete方法

restful架构 实例 restful技术_spring

 

restful的目的是让前端开发人员不用在这种url中产生混乱,我们有这种体会,开发人员随意起名字,无非就是增删改查,现在的话,使用了restful的风格,他只要知道哪个资源负责,使用一个统一的接口,仅仅使用method来区分,是开发变得很条理,很容易理解,很规范。

有助于实现缓存操作

关键词:

http的协议,要有规矩(put/post/delete/get),统一的资源接口(只要知道这个资源的名字,我们就通过上面的四个操作定位到提供的服务)

和soap的区别?能相互替代么?
soap相对于restful来说,应用时间很久了,以前的系统间的调用几乎都是在soa中实现,这是历史遗留的问题,而且大部分不回去改成restful的风格,虽然restful简单,规范,但是系统间通讯还是使用soap,他隐藏了实现细节,像调用本地方法一样。而restful更多还是应用于url的方式访问。