谷歌翻译api v2一个RESTful架构?

时间:2011-07-12 04:13:00

标签: javascript rest google-translate

Google翻译API v2是纯粹的GET风格,他们在https://www.googleapis.com/language/translate/v2

只有一个网址(或一个资源

所以基本上所有工具的变体都会像https://www.googleapis.com/language/translate/v2?parameters

一样被调用

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

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

因为基于简单的GET URL提供服务并不类似于RESTful吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如果你想把它叫做RESTful,它应该符合Fielding的标准

  • 客户端 - 服务器 - 将UI与数据存储分开

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

  • 客户端缓存 - 减少部分网络流量

  • 统一接口 - 将实现与它们提供的服务分离

  • 分层系统 - 意味着每个组件只关注其下方或上方的组件

  • 按需代码 - 允许通过下载小程序或脚本来扩展客户端功能

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

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

这对我来说很安静。

现在当人们使用GET发布内容时......那就是你应该反对的地方。