【发布时间】:2009-02-16 00:42:33
【问题描述】:
寻找对这个概念的清晰简洁的解释。
【问题讨论】:
标签: web-services rest
寻找对这个概念的清晰简洁的解释。
【问题讨论】:
标签: web-services rest
我找到的最好的解释是在这个REST tutorial。
【讨论】:
RESTful 应用程序是一种将其状态和功能公开为一组资源的应用程序,客户端可以对其进行操作并遵守一组特定原则:
Tim Scott 所指的Wikipedia article 给出了更多关于 REST 的起源、详细原理、示例等细节。
【讨论】:
只有几点:
如果您没有花费大部分时间来设计文档格式,那么您可能没有使用 REST。
【讨论】:
以 REST 为例:
POST /user
fname=John&lname=Doe&age=25
服务器响应:
200 OK
Location: /user/123
以后,您可以检索用户信息:
GET /user/123
服务器响应:
200 OK
<fname>John</fname><lname>Doe</lname><age>25</age>
更新:
PUT /user/123
fname=Johnny
【讨论】:
坦率地说,答案取决于上下文。 REST 和 RESTful 的含义取决于您使用的语言或框架或您要完成的任务。由于您已在“Web 服务”下标记了您的问题,我将在 RESTful Web 服务的上下文中回答,这仍然是一个广泛的类别。
RESTful Web 服务可以指任何东西,从严格的 REST 解释(所有操作都以严格的“RESTful”方式完成)到纯 XML 协议(这意味着它不是 SOAP 或 XMLRPC)。在后一种情况下,这是用词不当:这样的 REST 协议实际上是 "plain old XML" (or "POX") protocol。虽然 REST 协议通常使用 XML,因此也是 POX 协议,但这不一定是这种情况,反之亦然(仅仅因为协议使用 XML 并不能使其成为 RESTful)。
不用多说,真正的 RESTful API 由对对象执行的操作组成,由使用的 HTTP 方法和该对象的 URL 表示。这些操作是关于数据的,而不是关于方法的作用。例如,CRUD 操作(创建、读取、更新和删除)可以映射到一组特定的 URL 和操作。假设您正在与照片 API 进行交互。
可能会实施其他操作,例如通过 COPY 请求复制照片的能力。
通过这种方式,您使用的 HTTP 方法会直接映射到您的调用意图,而不是将您希望执行的操作作为 API 的一部分发送。相比之下,非 RESTful API 可能会使用更多 URL,并且仅使用 GET 和 POST 操作。因此,在此示例中,您可能会看到:
您会注意到在这种情况下 URL 是如何不同的,并且仅出于技术需要选择方法:要发送数据,您必须使用 POST,而所有其他请求都使用 GET。
【讨论】:
这意味着使用名称来识别命令和参数。
名称不仅仅是句柄或绰号,名称本身包含信息。具体来说,有关请求内容、请求参数等的信息。
名称不是“根”,而是动作加上输入数据。
【讨论】:
我从 InfoQ.com 上发表的文章中学到了最多的东西: http://www.infoq.com/rest 和 RESTful Web 服务一书 (http://oreilly.com/catalog/9780596529260/)。
./亚历克斯
免责声明:我与 InfoQ.com 有联系,但此建议是基于我自己的学习经验。
【讨论】: