通过Javascript与RESTful API进行交互?

时间:2010-03-31 02:41:56

标签: javascript api rest

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

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

以下是我的MAC终端运行的twitter API状态更新示例,其中包含curl:

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

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

非常感谢!!

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:6)

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

请参阅此页面如何操作 http://www.ibm.com/developerworks/library/wa-aj-jsonp1/

答案 2 :(得分:1)

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中指定的更改