2011-07-12 21 views
0

谷歌翻译API v2是纯GET的风格,他们只在https://www.googleapis.com/language/translate/v2是谷歌翻译api v2一个RESTful architeture?

所以基本上工具的所有变体将被称为像这样https://www.googleapis.com/language/translate/v2?parameters

他们声称该服务有一个网址(或一个资源)要成为RESTful(http://code.google.com/apis/language/translate/v2/using_rest.html),因为它基于简单的GET网址。

但严格来说它实际上是一个RESTful架构?

因为拥有一个基于简单GET网址的服务与REST风格并不相似吗?

回答

1

我个人只会将任何服务作为REST公开,只要我可以将服务建模为资源导向,在大多数情况下,这些服务就是将数据公开为资源。在谷歌翻译API的情况下,它给了更多的RPC感觉,而不是它暴露的资源。 因此,即使谷歌可能称之为基于REST(因为它基于简单的GET URL),我不会将其视为基于REST的服务。此外,如果您查看URL,则不会标识资源,而是看起来更像是您在查询字符串中传递值并根据这些值获得结果的端点。

+0

确定基本上如果我有一个服务是基于一个简单的GET URL提供参数在该网址和接收数据为JSON(有点像谷歌API的结构)我可以声称它是一个宁静的架构? – jaytufch

+0

其实这是非常主观的,在REST本身中有从简单的URL映射到资源到称为超链接的各种级别,它是一种金字塔。你的服务可以是这个金字塔中的任何特定层,但是是的,你可以在任何级别调用这个REST完成:) – Ankur

1

如果你想将它的RESTful它应满足Fielding的标准

  • 客户端 - 服务器 - 从数据存储设备中分离UI

  • 无状态服务器 - 提高可靠性和可扩展性

  • 客户端缓存 - 减少一些网络流量

  • Uniform Interface - deco uples实现从他们提供的

  • 分层系统服务 - 意味着每个组件只与那些略低于或略高于有关它

  • 代码点播 - 允许客户端功能,可以通过下载小程序扩展或脚本

此外,它应该有可寻址的资源,表示方向,自描述性消息,无状态服务器和缓存性。

那么如果API只是一个带有多个参数的GET调用呢?问题是:GET(带参数)幂等和安全吗?那么我认为是。这是一个“只读”界面。你永远不会改变服务器上的状态。所以GET对于给定的查询参数是安全且幂等和可缓存的。

对我来说这是RESTful。

现在,当人们使用GET发布的东西......这就是你应该反对的地方。

+0

+1,就像我在这里说的:http://stackoverflow.com/questions/6643658/are-all-网络服务 - 自动的,宁静的Web服务/ 6649010#评论-7873165 – Szocske