【发布时间】:2011-09-03 21:25:41
【问题描述】:
我在 Google 上搜索了 rest 的文档,但我不确定我是否理解它。
我在rest看到的是它的URL是干净的,例如:
http://host/webservice.asmx?name=xname&type=xtype
如果是 REST 风格,可能是:
http://host/webservice.asmx/xname/xtype
不是吗?
所以我只是发现网址更干净,但我找不到任何其他优点。
谁能告诉我更多?
我还有一些问题:
-
我发现一些基于 Ruby-on-Rails 构建的应用程序都使用干净的 URL,例如:
那么他们之间有什么关系吗?
-
网址重写
URL 重写是实现 REST 的方法之一吗?
我们有一些基于 ASP.NET 的 Web 服务,有没有办法将其更改为 REST 架构?
更新:
我已经阅读了这篇文章(rest-to-my-wife),似乎使用 http(post/get/put/delete) 提供的动词,我们可以使用刚刚 put 的相同 url 对资源进行不同的操作http正文中的真实数据; 例如,我想创建一个新订单:
POST http://www.store.com/order,
<purchase-order>
<item> ... </item>
</purchase-order>
但我还有一些问题:
1)我们如何在页面中设置http body?
另一个例子,我想删除一个订单:
删除http://www.store.com/order/1
但在页面中,url只是一个链接,
也许是这样的:
它是静态的,我们如何告诉浏览器当它把这个url发送到服务器时,它应该使用“删除”的方式而不是“获取”?
2) 是否会导致服务器端的额外工作?
由于我们可能会使用不同的 http 方法(get/post...)向服务器发送相同的 url,因此服务器可能必须解析 http 的 header 和 body 以确保用户要为此执行什么操作url(也许使用'resource'而不是'url'更好,但我无法区分url和uri和resouce之间的区别)?
以相同的url为例:
http://www.store.com/order/1
如果服务器发现http方法是get,他可能知道“哦,这家伙只是想获取id为1的订单的信息”,如果方法是delete,他知道“哦,这家伙要删除id为1的订单”。
所以看起来这种方式会将额外的工作从客户端转移到服务器端。
我的意思是在客户端的url都是一样的,更容易,但是对于服务器端它需要更多的工作,这是真的吗?
【问题讨论】:
-
REST 与 URL 的干净程度无关。 stackoverflow 上有很多关于 REST 的一般问题。请在提出此类问题之前进行更多搜索。
标签: web-services rest restful-authentication