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

GET路由语法正确调用NASA火星API无返回且报ERR_SSL_PROTOCOL_ERROR

NASA火星照片API路由调用报错修复方案

报错net::ERR_SSL_PROTOCOL_ERROR对应多个可修复问题,解决方案如下:

  • 协议不匹配问题:本地Express服务默认运行在HTTP协议上,客户端请求地址写了https://localhost:3000,本地没有配置SSL证书的情况下无法响应HTTPS请求,直接触发SSL协议错误。修复方式是把客户端请求地址的https改为http。
  • 路由参数错误问题:客户端请求路径直接使用了服务端路由的占位符/:rover_name,没有替换为实际的火星车名称(比如opportunity、curiosity等),服务端无法匹配到正确参数,会返回404或者异常结果。修复方式是请求时把占位符替换为真实的火星车标识。
  • 服务端异常无兜底问题:现有服务端代码在捕获到错误时仅打印本地日志,没有给客户端返回错误响应,会导致请求一直处于pending状态无返回。修复方式是在catch块中添加错误响应返回逻辑。

修复后代码示例

服务端代码

app.get('/roverInfo/:rover_name', async (req, res) => {
  const { rover_name } = req.params
  try {
    const nasaRes = await fetch(`https://api.nasa.gov/mars-photos/api/v1/rovers/${rover_name}/photos?sol=1000&api_key=${process.env.API_KEY}`)
    const images = await nasaRes.json()
    res.send({ images })
  } catch (err) {
    console.log('error:', err)
    res.status(500).send({ error: '获取火星车数据失败', detail: err.message })
  }
})

客户端代码(以查询opportunity号为例)

const showRovers = async (roverName = 'opportunity') => {
  try {
    const res = await fetch(`http://localhost:3000/roverInfo/${roverName}`)
    const roverData = await res.json()
    updateStore(store, { rovers: roverData.images })
    console.log(roverData.images)
  } catch (error) {
    console.log('errors:', error)
  }
}

Postman调用注意事项

Postman测试时同样使用HTTP协议发起请求,地址示例为http://localhost:3000/roverInfo/opportunity,提前确认服务端环境变量中已经正确配置NASA提供的API_KEY,避免NASA接口鉴权失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 20:45:03