首页 > 解决方案 > 使用 Express 进行 Yelp API 身份验证

问题描述

我正在尝试向 Yelp 的 API 发出 GET 请求,以便使用 Express 和 Nodejs 执行简单的搜索,但是我无法理解如何使用提供的 API 密钥设置请求标头。使用request我尝试按照文档通过基本身份验证,但我收到错误。使用setHeader我也收到错误。

使用 Postman,我可以输入 API 密钥并毫无问题地接收响应。我知道为此提供了软件包,但我认为如果可能的话,在不使用其他依赖项的情况下学习可能会很好。

var express = require("express"); 
var app = express();
var request = require("request");

request.get('https://api.yelp.com/v3/businesses/search', function (error, 
response, body) {
'auth': {
  'bearer': 'api_key_here'
}
});

app.listen(3000)

编辑:我能够修复回调函数(它正在传递标头),现在能够运行,但是我现在得到{"error": {"code": "TOKEN_MISSING", "description": "An access token must be supplied in order to use this endpoint."}}. 由于 API 密钥在 POSTMAN 中正常工作,因此我在这里做错了什么仍然感到困惑。

var express = require("express"); 
var app = express();
var request = require("request");

request.get('https://api.yelp.com/v3/businesses/search', {
'Authorization': {
Bearer: 'api key'
}}
function(error, response, body){
console.log(body);
}); 

标签: javascriptnode.jsexpress

解决方案


我尝试使用 express.js 来实现 Yelp API,但我发现使用yelp-fushion更容易。

我实现它如下:

require('dotenv').config();

const yelp = require('yelp-fusion');

const apiKey = process.env.YELP_API_KEY;

const searchRequest = {
  term: 'restaurants',
  location: 'Los Angeles',
};

const client = yelp.client(apiKey);

client.search(searchRequest)
  .then((response) => {
    console.log(response.jsonBody);
  })
  .catch((error) => {
    console.log(error);
  });

第一行是使用 .env 文件。
我将 Yelp API 密钥保存在 .env 文件中,如下所示YELP_API_KEY=6fNc0sj5Oyt_jsU2gdeDrlo_1NLm5c-df3f
然后我将它分配给const apiKey并用作yelp.client()

yelp-fushion 的文档为您提供有关企业搜索参数的更多详细信息。

最后,client.search()方法将返回 response.jsonBody 包含您需要的所有数据。


推荐阅读