如何使用API​​密钥进行Ajax调用?

时间:2017-07-23 03:33:54

标签: javascript jquery json ajax api

我试图首次在纽约时报API(http://developer.nytimes.com/)中包含API密钥,并使用ajax从中获取新闻以填充本地网站,但我没有看到任何结果。我被告知要确保您的API密钥已在URL的查询参数中设置,但我不知道该怎么做。

 ?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格式查看各种故事的网址,例如商业,技术等,并将它们用于ajax调用。

3 个答案:

答案 0 :(得分:0)

试试这个我从这个

获取数据



var url = "https://api.nytimes.com/svc/search/v2/articlesearch.json";
url += '?' + $.param({
  'api-key': "11111111111111111111111"
});
$.ajax({
  url: url,
  method: 'GET',
  dataType: 'JSON',
  success: function(data) {
    console.log(data)
  },
  error: function(err) {
    console.log('error:' + err)
  }
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

你也可以尝试如下

&#13;
&#13;
var url = "https://api.nytimes.com/svc/search/v2/articlesearch.json";
$.ajax({
  url: url,
  method: 'GET',
  dataType: 'JSON',
  data: {
    'api-key': '11111111111111111'
  },
  success: function(data) {
    console.log(data)
  },
  error: function(err) {
    console.log('error:' + err)
  }
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这不是一个好的做法,直接在客户端上下文中公开API Key。

我强烈建议在浏览器和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​​密钥将目标请求发送到NY Times

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

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

# 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

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

答案 2 :(得分:0)

嗯,你应该这样试试。它应该给你一个没有跨源错误的结果:

$.ajax({
  type: 'GET',
  url: 'http://api.nytimes.com/svc/search/v2/articlesearch.json',
  data: {
    'q': queryString,
    'response-format': "jsonp",
    'api-key': nytApiKey,
  },
  success: function(data) {
    // passed function object for data processing 
    console.log(data);
  },
  error: function(err) {
    console.log('error:' + err)
  }
});