我是一个总菜鸟,我刚刚开始学习API。我试图使用Yelp API,但似乎无法访问它。 根据文档,我应该:"将API密钥放在请求标头中作为"授权:承载" 我不熟悉授权,也不确定我是否正确地执行了授权。这就是我所拥有的
function displayYelp() {
var URL =
"https://api.yelp.com/v3/businesses/search?term=restaurant&latitude=40.82783908257346&longitude=-74.10162448883057";
$.ajax({
url: URL,
method: "GET",
headers: {
authorization:
"bearer //My Key Goes Here",
},
}).then(function(response) {
console.log(response);
});
}
即使您无法回答我的具体问题,也欢迎任何有关授权方式的帮助!
答案 0 :(得分:0)
Authorization
标头经常用于使用令牌对API进行身份验证。您可以阅读有关令牌身份验证here的更多信息。您可能想尝试添加错误处理程序,以便查看问题所在:
$.ajax({
url: URL,
method: "GET",
headers: {
"Authorization":
"Bearer //My Key Goes Here",
},
}).then(function(response) {
console.log(response);
}).catch(function(err) {
console.error(err);
});
您可能还需要将“授权”和“承载”大写,以便拥有正确的标题格式。否则,你的ajax调用看起来是正确的!
答案 1 :(得分:0)
我看到你的评论说你在预检方面遇到了问题。在预检期间阻止API请求的原因是因为Yelp没有发送Access-Control-Allow-Origin
标头。因为他们不发送此标头,您将无法进行跨源AJAX请求。
在搜索GitHub之后,我发现有几个来源支持Yelp API因为CORS安全问题而不支持客户端JavaScript的事实:
CORS issue Fetch API cannot load https://api.yelp.com #25
Does api.yelp.com support Access-Control-Allow-Origin header for client-side JS? #99
这意味着您需要使用服务器端方法来使用API。免责声明:我已经看到了JSONP方法的提及,但还没有找到一个有效的例子。