返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #43058同步于 2015/7/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
问大家个问题,”REST API“,请问这个东西怎么解释呢?
nijian81
2015/7/24镜像同步29 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
用http的method、path、header等本身的语意来表示各种请求的动作,而不是只把http作为一个路人。
非restful: POST http://bbs.byr.cn/web-service-entry.php
entity: <soap:Envelop><soap:Body><byr:query-article type="text/html"><board>Java</board><id>43508</id></byr:query-article></soap:Body></soap:Envelop>
非restrul: GET http://bbs.byr.cn/article.php?board=Java&id=43508
restful: GET http://bbs.byr.cn/article/Java/43508
Content-Type: text/html
【 在 nuanyangyang 的大作中提到: 】
: 用http的method、path、header等本身的语意来表示各种请求的动作,而不是只把http作为一个路人。
: 非restful: POST http://bbs.byr.cn/web-service-entry.php
: entity: <soap:Envelop><soap:Body><byr:query-article type="text/html"><board>Java</board><id>43508</id></byr:query-article></soap:Body></soap:Envelop>
: ...................
我懂了,谢谢你
restful,除了url 和http method的语义之外应该还有无状态
就是server不保存客户端的状态,一个http请求久携带了自己所有的参数。(这样应该方便服务器扩展做负载均衡)
举个栗子:例如某个网页上有状态的下一页的link是:example.com/page?action=next
无状态就应该:example.com/page/<pagenumber>
好像还有幂等性(自己打了半天发现说不清楚哈哈,直接抄一段来了):
关于HTTP请求采用的这些个方法,具有两个基本的特性,即“安全性”和“幂等性”。对于上述7种HTTP方法,GET、HEAD和OPTIONS均被认为是安全的方法,因为它们旨在实现对数据的获取,并不具有“边界效应(Side Effect[1])”。至于其它4个HTTP方法,由于它们会导致服务端资源的变化,所以被认为是不安全的方法。
幂等性(Idempotent)是一个数学上的概念,在这里表示发送一次和多次请求引起的边界效应是一致的。在网速不够快的情况下,客户端发送一个请求后不能立即得到响应,由于不能确定是否请求是否被成功提交,所以它有可能会再次发送另一个相同的请求,幂等性决定了第二个请求是否有效。
http://www.cnblogs.com/artech/p/3506553.html
现在客户端的计算能力越来越强,所以有一些网站倾向于把更多的逻辑放到js,这样可以充分利用cdn来减小延时和服务器的压力,所以和服务器的接口就只变成数据接口了,做成restful正合适。
微软也搞了一个restful的协议叫OData来坑人,除了restful的概念之外还定义了一些基于数据的操作和服务发现的东西
例如访问一个url example.com/web返回的xml结构里会告诉你web里面有两个数据结构 pages 和 users
然后查询page的时候可以使用 example.com/web/pages?$filter=ID gt 10的东西来查找id>10 的所有page。
不过理想很丰满,现实很骨感。微软自己的Open Api都不能完全支持OData协议定义的所有功能。。囧。。
【 在 nijian81 的大作中提到: 】
哎 我自己一直理解的就是Url风格换了。。。
你说的这个有状态和无状态 用example.com?page=number一样的啊
【 在 aiquestion 的大作中提到: 】
: restful,除了url 和http method的语义之外应该还有无状态
: 就是server不保存客户端的状态,一个http请求久携带了自己所有的参数。(这样应该方便服务器扩展做负载均衡)
: 举个栗子:例如某个网页上有状态的下一页的link是:example.com/page?action=next
: ...................
嗯,是的。用soap也能无状态。
所以据说restful不是一个协议,而是一种架构风格。。。
【 在 cowfighting 的大作中提到: 】
: 哎 我自己一直理解的就是Url风格换了。。。
: 你说的这个有状态和无状态 用example.com?page=number一样的啊
: