restful的思想就是让url的可读性更高。
像www.xxxxx.com/user/1/2/20这样的url我觉得并不是一个良好的restful实现。
我的理解,应该是每一个参数都有明确的意义。
比如,www.xxxxx.com/user/1/page/2/pagesize/20/list.json
url中不应该出现动词,所有的动作都应该是通过不同的http请求方法来体现
说下我的理解:
前面说的那种URL风格并不是表示那就是restful。
ResultFul推荐每个URL能操作具体的资源,而且能准确描述服务器对资源的处理动作,通常服务器对资源支持get/post/put/delete/等,用来实现资源的增删改查,但是通常用浏览器访问资源都是GET,增加都是POST,而修改和删除不能正确描述
比如xxxxx/user/1,我既要能表示我要找id为1的user,我还要能表示我能删掉id为1的user;
xxxxx/user,我既要能表示添加一个user,又要能表示修改一个user;
问题是现在的浏览器只支持post/get,它根本无法让服务器知道,我到底要查找user还是要删除User,要添加还是要修改user。
所以第三方框架为了实现这种效果而做了特定的规则去模拟实现,比如spring就用了
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
这么个filter来模拟实现,以支持更多的http操作(put,delete),当我需要修改一个user的时候,只需要在<form>中加入<input type="hidden" name="_method" value="PUT">,这样提交这个表单的时候spring会知道这是要修改一个user。
具体的不想打字了,这种url风格使得项目架构清晰,好处一时说不上来,但是习惯性的使用这种风格,确实很方便。
个人理解,勿喷
restful风格,就是一种面向资源服务的API设计方式,它不是规范,不是标准,它一种设计模式。以前流行的web service服务都是面向过程,基于RPC协议的SOAP协议,对于现在或者未来,更多的人了解并且深受SOA思想影响,以面向服务为目标,而现在的SOAP虽然支持SOA,但存在很很大的差别,所以,慢慢就流行基于restful风格的web service。说简单一点,就是它纯粹面向资源,面向服务的思想,目前J2EE6的JAX-RS就是这种restful风格实现的新技术。