Express后端调用Yelp Fusion API出现AxiosError 400错误求助
解决Yelp API请求400错误的方案
1. 先获取Yelp返回的具体错误信息
当前代码的catch块只打印了Axios的错误框架,看不到Yelp返回的核心错误原因(比如无效密钥、参数缺失等)。修改catch代码,直接输出Yelp的错误详情:
.catch(err => { console.log('Yelp API Error:', err.response?.data || err.message); res.status(err.status || 500).json({ error: err.response?.data?.error?.description || err.message }); })
2. 检查API密钥有效性
- 登录Yelp开发者后台,确认你的API密钥未过期、未被禁用。
- 不要硬编码密钥,改用环境变量避免泄露:
- 安装dotenv:
npm install dotenv - 项目根目录创建
.env文件:YELP_API_KEY=你的Yelp API密钥 - 在路由文件顶部加载环境变量:
require('dotenv').config(); - 修改Authorization头:
Authorization: `Bearer ${process.env.YELP_API_KEY}`
- 安装dotenv:
3. 校验请求参数
Yelp的businesses/search接口对参数格式有要求:
- 确保
term不为空:后端添加参数校验router.post('/:item', async (req, res) => { const searchTerm = req.params.item; if (!searchTerm.trim()) { return res.status(400).json({ error: '搜索关键词不能为空' }); } // 后续axios请求逻辑... }) - 确认前端传参方式正确:如果前端通过URL路径传参(如
POST /api/yelp/Pizza),用req.params.item没问题;如果参数在请求体里,要改成req.body.item。
4. 检查应用权限
登录Yelp开发者后台,确认你的应用拥有访问businesses/search接口的权限。
内容的提问来源于stack exchange,提问作者Ronny
相关产品推荐
相关产品推荐

