restful api

RESTful目前只知道有这样一种提法,没见有强制性的要求什么样的才叫RESTful。也没见有什么框架帮你来实现RESTful(刚才搜一下,好像有框架,轻量级框架,没用过),我理解的RESTful是:
1. 使用http协议;
2. 使用GET POST PUT DELETE来区分请求操作的类别,但这不是必须的,你完全可以GET请求发来但请求的方法是删除一条数据,只是建议用这四种操作来区分;
3. 可以把RESTful理解成远程方法调用,实际上就是面向服务编程(SOAP),访问远程一个服务,那个服务是用什么实现的怎么实现的你不用考虑,只要知道GET http://xxx/method/?arg0=1&arg1=2这样就能调用method方法传两个参数,拿到返回值,它比webservice更容易理解,更直观,也更轻量级;
4. 尽量使用stateless,即无状态的请求,就是每个请求都与前后的请求无关,不保留每次请求的状态,即server端没有session的概念,但有时我们确实需要知道一组请求是来自同一个客户端的请求序列,一般用token传递的方式来实现;

去读一下腾迅的或百度的openAPI,并且下载个腾讯的openAPI客户端,读一下示例代码或照着写一个程序,应该可以更多理解一下restful,这些openAPI一般是restful的,但restful也没有硬规范,所以他们实现时也不是严格的restful


说下我的理解:

前面说的那种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风格使得项目架构清晰,好处一时说不上来,但是习惯性的使用这种风格,确实很方便。

个人理解,勿喷

另外给大家贴一个网站https://jersey.java.net/增进对其了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值