【问题标题】:REST and web services - having trouble understanding themREST 和 Web 服务 - 无法理解它们
【发布时间】:2011-03-20 19:42:52
【问题描述】:

好吧,标题或多或少说明了一切。我有点理解 REST 是什么——使用现有的 HTTP 过程(POST、GET 等)来促进 Web 服务的创建/使用。我对定义什么是 Web 服务 以及 REST 如何实际用于创建/公开服务感到更加困惑。

例如,根据我的阅读,Twitter 是 RESTful。这实际上是什么意思? HTTP 过程是如何调用的?当我写推文时,REST 是如何涉及的,它与简单地使用服务器端语言并将文本数据存储在数据库或文件中有何不同?

【问题讨论】:

  • 我不禁认为你可以从:en.wikipedia.org/wiki/Web_service
  • 我实际上确实从那里开始,但它仍然没有回答这个概念 -> 我遇到了实施问题。

标签: web-services rest


【解决方案1】:

这个概念对我来说也有点模糊,但在看了你的问题后,我决定自己澄清一下。

请参考msdn中的this链接和this

基本上它似乎是关于使用http方法(Get/Post/Delete)来识别应用程序允许的资源暴露。 例如: 假设您有网址:

http://Mysite.com/Videos/21 

其中 21 是视频的 id。 我们可以进一步定义此 url 允许使用哪些方法 - GET 用于检索资源,POST 用于更新/创建,Delete 用于删除。

一般来说,使用 http 方法公开应用程序资源及其支持的操作似乎是一种有组织且干净的方式

【讨论】:

  • 由于 MSDN 链接而标记为答案。正是我希望找到的:概念 -> 实施。
  • @kevinmajor1:msdn 文档看起来非常全面且内容丰富。我现在真的很喜欢阅读它。 :)
【解决方案2】:

您可能希望以this excellent introductionary writeup 开头。它涵盖了一切,从头到尾。

【讨论】:

    【解决方案3】:

    RESTful 架构提供了一个唯一的 URL,该 URL 单独定义每个资源,并通过 HTTP 动作动词推断对同一 URL 执行的适当操作。

    我能想到的解释它的最佳方式是将应用程序中的每个数据模型视为唯一资源,REST 有助于路由请求,而无需在 url 末尾使用查询字符串,例如,而不是 @ 987654321@,你就用posts/1吧。

    通过例子更容易理解。这将是 Rails 强制执行的 REST 架构,但可以让您很好地了解上下文。

    • GET /tweets/1 ⇒ 表示你想获取id为1的tweet
    • GET /tweets/1/edit ⇒ 表示您要转到与 ID 为 1 的推文关联的操作编辑
    • PUT /tweets/1 ⇒ PUT 表示更新这条推文而不是获取它
    • POST /tweets ⇒ POST 说我有一个新的,将其添加到数据库中,我无法提供 id 因为我还没有一个,直到我将它保存到数据库中
    • DELETE /tweets/1 ⇒ 从数据库中删除它

    资源通常是嵌套的,所以在 twitter 中可能是这样的

    • GET /users/1/jedschneider/1 ⇒ 用户有很多推文;获取 ID 为 jedschneider 的用户及其推文 ID 1

    实现 REST 的架构将是应用程序独有的,一些应用程序默认支持(如 Rails)。

    【讨论】:

      【解决方案4】:

      您正在苦苦挣扎,因为对“REST”一词有两种相对不同的理解。我有attempted to answer this earlier,但我只想说:Twitter 的 API 不是严格意义上的 RESTful,Facebook 也不是。

      sTodorov 的回答显示 common misunderstanding 这是关于使用所有四个 HTTP 动词,并为资源分配不同的 URI(通常带有所有 URI 的文档)。因此,当 Twitter 调用 REST 时,他们只是在做这件事,以及大多数其他 RESTful API。

      但是这种所谓的 REST 与 RPC 没有什么不同,只是 RPC(带有 IDL 或 WSDL)可能会引入代码生成工具,代价是耦合度更高。

      REST 实际上不是 RPC。它是一种基于超媒体的分布式系统架构,可能不适合每个制作 API 的人。在链接的MSDN 文章中,当他们谈论<Bookmarks>http://contoso.com/bookmarkservice/skonnard</Bookmarks> 时,超媒体开始了,该部分以这句话结束:

      这些表示可以在不同类型的资源之间导航

      这是大多数 RESTful API 违反的核心原则。这篇文章没有说明如何document a RESTful API,如果这样做了,客户端必须导航链接才能做事(RESTful),而不是提供很多URI模板( RPCish)。

      【讨论】:

      • 似乎真正了解 REST 的人是濒临灭绝的物种。我遇到的大多数人似乎认为这只是意味着不在 URL 中使用查询参数(这当然与 REST 完全正交)。即使它是关于 URL 和 HTTP 方法的想法,即使这些 URL 是神奇地构造而不是导航到的,似乎也是一个巨大的飞跃,尽管它仍然不正确。嗯。
      猜你喜欢
      • 2012-08-01
      • 1970-01-01
      • 2018-03-17
      • 2015-03-17
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多