You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

axios请求OpenWeatherMap API返回400状态码无法获取数据如何解决?

解决方案

错误根因

  • 请求URL未补全https://协议头,axios无法正确识别请求目标,会将其识别为当前服务的相对路径,导致请求地址完全错误
  • URL参数分隔符误用了HTML转义字符&,实际请求需要使用原生&分隔参数
  • 额外问题:axios的返回值是封装后的响应对象,接口实际返回的数据存放在data属性下,你之前直接返回整个axios对象会包含很多不必要的请求元数据;GET请求成功的状态码应该使用200而非201,错误返回也不要固定写403,要跟随接口实际的错误状态返回更合理。

修复后代码

try {
  const city = 'london'
  // 补全协议,修正参数分隔符
  const response = await axios.get(
    `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${process.env.WEATHER_API_KEY}`
  )
  // 调试建议:先打印环境变量确认API密钥是否正常加载
  // console.log('API密钥:', process.env.WEATHER_API_KEY)
  console.log('接口返回数据:', response.data)
  res.status(200).json(response.data)
} catch (error) {
  console.log('请求错误信息:', error.message)
  const errStatus = error.response?.status || 500
  const errMsg = error.response?.data || error.message
  res.status(errStatus).json({ error: errMsg })
}

额外校验建议

如果修改后还是报错,可以先把拼接完成的完整URL打印出来,复制到Postman里直接请求,就能快速定位是参数拼接问题还是API密钥/权限问题。

内容的提问来源于stack exchange,提问作者Upendra Dhamala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 16:06:03