【问题标题】:is google translate api v2 a RESTful architeture?google translate api v2 是 RESTful 架构吗?
【发布时间】:2011-07-12 04:12:59
【问题描述】:

Google translate 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 url。

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

因为拥有基于简单 GET url 的服务并不类似于 RESTful 对吧?

【问题讨论】:

    标签: javascript rest google-translate


    【解决方案1】:

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

    【讨论】:

    • 好的,所以基本上如果我有一个基于简单 GET URL 的服务,在该 url 中提供参数并以 json 格式接收数据(有点像 google apis 的结构),我可以声称它做一个宁静的建筑?
    • 其实这是非常主观的,在 REST 本身中,从简单的 URL 映射到资源再到称为超链接的东西,它是一种金字塔。您的服务可以是这个金字塔中的任何特定层,但是是的,您可以在任何级别调用该 REST 完整 :)
    【解决方案2】:

    如果你想称它为 RESTful,它应该符合 Fielding 的标准

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

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

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

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

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

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

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

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

    这对我来说是 RESTful。

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2023-04-09
    • 2014-01-31
    • 2011-08-10
    • 1970-01-01
    相关资源
    最近更新 更多