Web services REST和web服务-理解它们有困难

Web services REST和web服务-理解它们有困难,web-services,rest,Web Services,Rest,嗯,这个标题或多或少说明了一切。我有点理解REST是什么——使用现有的HTTP过程(POST、GET等)来促进web服务的创建/使用。我对什么定义了web服务以及如何实际使用REST来创建/公开服务更为困惑 例如,据我所读到的,Twitter是RESTful的。这到底是什么意思?如何调用HTTP过程?当我写tweet时,REST是如何涉及的,它与简单地使用服务器端语言并将文本数据存储在数据库或文件中有什么不同?这个概念对我来说也有点模糊,但在看了你的问题后,我决定为自己进一步澄清一下 请参阅ms

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


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

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

请参阅msdn和中的链接

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

http://Mysite.com/Videos/21 
其中21是视频的id。 我们可以进一步定义允许使用哪些方法访问此url-获取用于检索资源的方法、发布用于更新/创建的方法、删除用于删除的方法


一般来说,这似乎是一种有组织、干净的方式来公开应用程序资源以及使用http方法支持的操作。RESTful体系结构提供了一个唯一的URL,分别定义每个资源,并通过http动作动词推断对同一URL要执行的适当动作

我能想到的最好的解释方法是将应用程序中的每个数据模型看作是一个唯一的资源,REST帮助路由请求,而无需在url末尾使用查询字符串,例如,您只需使用
/posts/&q=1
,而不用
/posts/1

通过例子更容易理解。这将是Rails强制实施的REST体系结构,但它让您对上下文有了很好的了解

  • GET/tweets/1
    ⇒ 表示您希望获得id为
    1
  • GET/tweets/1/edit
    ⇒ 表示您要转到与id为
    1
    1的推特相关联的操作编辑
  • PUT/tweets/1
    ⇒ PUT表示要更新此推文,而不是获取它
  • POST/tweets
    ⇒ 帖子说我有一个新的,添加到数据库,我不能给一个id,因为我还没有一个,直到我保存到数据库
  • DELETE/tweets/1
    ⇒ 从数据库中删除它
资源通常是嵌套的,尽管在twitter中可能是这样的

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

实现REST的体系结构对于应用程序来说是独一无二的,有些应用程序默认支持REST(如Rails)。

您可能需要从REST开始。它涵盖了一切,从头到尾

你在挣扎,因为对“休息”这个词有两种相对不同的理解。我已经说过,但我只想说:Twitter的API在严格意义上不是RESTful,Facebook也不是

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

但是这种所谓的REST与RPC没有什么不同,除了RPC(使用idl或wsdl)可能引入代码生成功能,但代价是更高的耦合

REST实际上不是RPC。它是一种基于超媒体的分布式系统架构,可能不适合所有制作API的人。在链接的文章中,超媒体在谈论
http://contoso.com/bookmarkservice/skonnard
,本节以以下句子结尾:

这些表示使在不同类型的资源之间导航成为可能


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

我忍不住想你可以从以下方面开始:我确实从那里开始,但它仍然没有回答我遇到的概念->实现问题。由于MSDN链接,标记为答案。正是我希望找到的:概念->实现。@kevinmajor1:msdn文档似乎非常全面,内容丰富。我现在真的很喜欢读它。:)似乎真正了解休息的人是濒危物种。我遇到的大多数人似乎认为这只是意味着不在URL中使用查询参数(当然,这与REST完全正交)。即使是关于URL和HTTP方法的想法,即使这些URL是神奇地构造的而不是导航到的,似乎是一个巨大的飞跃,尽管它仍然不正确。嗯。