【问题标题】:Interacting with RESTful API's via Javascript?通过 Javascript 与 RESTful API 交互?
【发布时间】:2013-02-13 13:20:03
【问题描述】:

首先,我知道 C++、C#、Python、一些 Ruby 和基本的 Javascript。无论如何,我的问题围绕着如何通过 Javascript 与 RESTful API 进行交互。我在各种网站上都找不到任何好的例子,所以我来到了这里。

所以我的基本问题是:如何通过 JS 与 RESTful API 进行交互?我在哪里可以找到如何在 JS 中实现 OAuth?我知道如何获取我的密钥等,只是不知道如何将它们实际编码。

以下是从我的 MAC 终端使用 curl 运行的 twitter API 状态更新示例:

curl -u username:password 
-d "my tweet" 
http://api.twitter.com/1/statuses/update.json

如何在 Javascript 中实现这一点(最好使用 OAuth 身份验证)?这至少会让我朝着正确的方向前进。

非常感谢!!

【问题讨论】:

    标签: javascript api rest


    【解决方案1】:

    问题是您将需要使用 AJAX 来查询远程 REST API,并且 AJAX 只允许查询与页面相同域中的资源。因此,对api.twitter.com 的请求将失败,因为它与您的服务器位于不同的域中。

    要更正此问题,您需要对服务器进行编码以向 twitter 发出请求。但是,您可以创建自己的 AJAX 存根,直接从您的页面接受数据,然后使用您的客户端提供的数据构建/发送请求到 twitter 服务器端。

    【讨论】:

      【解决方案2】:

      通常 Justin 的方法是正确的,但是如果您必须让您的客户端脚本与 REST 服务交互,那么您可以使用 JsonP 来完成。这是封装在函数调用中的 JSON 数据。

      看这个页面怎么做 http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

      【讨论】:

        【解决方案3】:
        JavaScript 中的

        OAuth 版本 1.0 是个坏主意,因为您需要公开应用程序的密钥,这样做可能会允许其他人冒充您的应用程序。 OAuth 1.0 旨在与您控制的服务器一起使用。因此,您的用户可以将他们的令牌发送到您的服务器,然后您代表他们向 twitter 发出请求。

        OAuth 2.0 通过 twitter does not support it yet 解决了这个问题。

        如果你真的想要 OAuth 1.0,你可以使用我的插件:https://github.com/jpillora/jquery.rest 并进行this GitHub issue 中指定的更改

        【讨论】: