【发布时间】:2012-09-25 18:11:40
【问题描述】:
感谢收看!
背景
我正在构建一个严格的机器对机器 Web 服务(restful)应用程序。应用程序将侦听请求、检索数据、构造对象、序列化为 JSON 并返回 JSON 对象。
此应用程序最终将被其他网络应用程序以及 iOS 应用程序、Android 应用程序甚至桌面应用程序使用。
我继承的现有代码根据 HTTP 动词(GET、POST 等)调用服务的方式进行区分。
问题
在当今机器对机器通信的时代,HTTP 动词是否不再重要?事实上,这是否会限制未来采用服务 API 以基于 HTTP 动词的代码?
更新
fmgp 为“为什么”使用这些动词提供了明确的答案,但我觉得我应该澄清我的担忧:
其他平台(例如 iOS 或 Android)是否能够发起基于 HTTP 动词的调用,例如 GET 和 POST?如果答案是“否”,那么我认为我们应该远离依赖这些动词,而是将所需的操作作为参数构建到请求 URL 中。
【问题讨论】:
-
你能举个例子吗?我不确定,你的意思是像
/getUser/123和/putUser这样的网址吗?只是听起来不太平静,我从来没有听说过这是一种练习。 -
当然,如果我
GET"users/someUserId",代码会识别出请求是基于 get 的,并返回一个包含该用户信息的用户对象。如果我POST"users/someUserId" 并随帖子发送一个用户对象,例如从表单中提取的更改的名字,那么代码会使用新的名字更新数据库。 -
好的,我答错了。我不知何故,虽然你的意思是服务的命名,即字面上使用 get/post 作为 url 的一部分。使用http方法是restful服务的核心概念。有时你甚至需要使用它,例如你不应该使用
GET来更新你的数据库,因为多个相同的请求可能会被中间服务器缓存。 -
谢谢kapep,这很有道理。
标签: web-services rest asp.net-mvc-4 soa