Javascript 如何使用API键进行Ajax调用?

Javascript 如何使用API键进行Ajax调用?,javascript,jquery,json,ajax,api,Javascript,Jquery,Json,Ajax,Api,我第一次尝试从《纽约时报》API()中包含一个API键,并使用ajax从中获取新闻以填充本地网站,但我没有看到任何结果。我被告知要确保在URL的查询参数中设置了API密钥,但我不知道该怎么做 ?api-key=your-key 以下是我所做的: // Built by LucyBot. www.lucybot.com var url = "https://api.nytimes.com/svc/search/v2/articlesearch.json"; url += '?' + $.pa

我第一次尝试从《纽约时报》API()中包含一个API键,并使用ajax从中获取新闻以填充本地网站,但我没有看到任何结果。我被告知要确保在URL的查询参数中设置了API密钥,但我不知道该怎么做

 ?api-key=your-key 
以下是我所做的:

// Built by LucyBot. www.lucybot.com
var url = "https://api.nytimes.com/svc/search/v2/articlesearch.json";
url += '?' + $.param({
'api-key': "111111111111111111111111111111"
});
$.ajax({
url: url,
method: 'GET',
}).done(function(result) {
console.log(result);
}).fail(function(err) {
throw err;
});

我需要查看各种故事(如业务、技术等)的json格式url,并将其用于ajax调用。

试试这个,我从中获取数据

var url=”https://api.nytimes.com/svc/search/v2/articlesearch.json";
url+='?'+$.param({
“api密钥”:“11111111111111”
});
$.ajax({
url:url,
方法:“GET”,
数据类型:“JSON”,
成功:功能(数据){
console.log(数据)
},
错误:函数(err){
console.log('error:'+err)
}
})

直接在客户端上下文中公开API密钥不是一个好做法

我强烈建议在浏览器和API之间创建一个抽象层

其思想是将AJAX请求定向到自己的后端操作,如:

var url = "www.mydomain.com/api/articlesearch";
$.ajax({
url: url,
method: 'GET',
}).done(function(result) {
    console.log(result);
}).fail(function(err) {
    throw err;
});
在后端(/api/articlesearch)中,我们使用api键将目标请求放置到纽约时报

通过这种方式,您可以获得更适合javascript的代码,从而保持职责的正确分配

PS:如果您希望它更安全,可以使用env变量定义API键。下面是一个用Ruby制作的示例(仅供参考):


使用这种方法,API密钥也不会出现在GIT存储库中:)

那么,您应该这样尝试。它应该为您提供无交叉原点错误的结果:

$.ajax({
键入:“GET”,
网址:'http://api.nytimes.com/svc/search/v2/articlesearch.json',
数据:{
“q”:查询字符串,
“响应格式”:“jsonp”,
“api密钥”:nytApiKey,
},
成功:功能(数据){
//传递用于数据处理的函数对象
控制台日志(数据);
},
错误:函数(err){
console.log('error:'+err)
}

});尝试上面的脚本更改api密钥,并查看您将获得的数据您应该使用POST传递任何敏感内容,如密码、密钥、,等等,从->所有适合发布的api。我设法将我的api键添加到url的末尾以查看json格式,但仍然需要找到一种方法来执行ajax调用,以便在浏览器中查看带有图片的故事。
# Inside ApisController
def articlesearch
    response = RestClient::Request.execute(
    method: :get,
    url: 'https://api.nytimes.com/svc/search/v2/articlesearch.json',
    headers: {api_key: ENV['API_KEY']})

    render json: response
end