我搜索了有关rest文档的信息,但我并不确定我完全理解它。
在rest中,我能看到的是其URL很简洁,例如:
http://host/webservice.asmx?name=xname&type=xtype
如果采用REST风格,可能是这样的:
http://host/webservice.asmx/xname/xtype
不是吗?
我刚刚发现URL更简洁,但我找不到其他的优点。
有人能告诉我更多吗?
我还有一些问题:
我发现一些基于Ruby-on-Rails构建的应用程序都使用干净的URL,例如:
它们之间是否有任何关系?
URL重写
URL重写是实现REST的一种方式吗?
我们有一些基于ASP.NET构建的Web服务,有没有办法将其改为REST架构?
更新:
我已经阅读了这篇文章(rest-to-my-wife),似乎使用http提供的动词(post/get/put/delete),我们可以使用相同的url对资源执行不同的操作,只需将相关数据放入http主体中; 例如,我想创建一个新订单:
POST http://www.store.com/order,
<purchase-order>
<item> ... </item>
</purchase-order>
但我还有一些问题:
1)如何在页面中设置HTTP正文?
另一个例子,我想要删除一个订单:
删除http://www.store.com/order/1
但在页面中,URL只是一个链接,
可能是这样的:
它是静态的,我们如何告诉浏览器,在将此URL发送到服务器时,应该使用“删除”方式而不是“获取”方式?
2)这会导致服务器端额外的工作吗?
由于我们可能会使用不同的HTTP方法(GET / POST ...)向服务器发送相同的URL,因此服务器可能需要解析HTTP头和正文以确保用户希望对该URL执行什么操作(也许使用“资源”而不是“URL”更好,但我不能说明URL、URI和资源之间的区别)?
以同一URL为例:
http://www.store.com/order/1
如果服务器发现http方法是“get”,它可能会知道“哦,这个家伙只想获取id为1的订单信息”,如果方法是“delete”,它就知道“哦,这个家伙想删除id为1的订单”。因此,这种方式似乎将额外的工作从客户端转移到了服务器端。
我的意思是,在客户端中,URL都是相同的,这更容易,但对于服务器端而言,它需要更多的工作,这是真的吗?