javascript - 获取路线是正确的,但 api 仍然无法正常工作(什么都没有)
问题描述
我正在尝试为此 API 创建一条获取路线:
尽管 get 路由的语法,API 仍然不能在邮递员和客户端工作。
这是获取路线代码:
app.get('/roverInfo/:rover_name', async (req, res) => {
const { rover_name } = req.params
try {
let images = await fetch(`https://api.nasa.gov/mars-photos/api/v1/rovers/${rover_name}/photos?sol=1000&api_key=${process.env.API_KEY}`).then((res) => res.json())
res.send({ images })
} catch (err) {
console.log('error:', err)
}
})
这是客户端请求:
const showRovers = async (rovers) => {
try {
await fetch(`https://localhost:3000/roverInfo/:rover_name`)
.then((res) => {
return res.json()
})
.then((rovers) => updateStore(store, { rovers }), console.log(rovers))
} catch (error) {
console.log('errors:', error)
}
}
这是我得到的错误:
Failed to load resource: net::ERR_SSL_PROTOCOL_ERROR
解决方案
建议:不要将 await/async 与 .then 混合使用,使用其中之一
app.get("/roverInfo/:rover_name", async (req, res) => {
const { rover_name } = req.params;
try {
const res = await fetch(
`https://api.nasa.gov/mars-photos/api/v1/rovers/${rover_name}/photos?sol=1000&api_key=${process.env.API_KEY}`
) // removed .then
const images = await res.json(); // await response to json
res.send({ images });
} catch (err) {
console.log("error:", err);
}
});
02.应该是http而不是https
03.需要将流动站名称传递给参数而不是使用:rover_name
let getRovers = showRovers('opportunity');
const showRovers = async (roverName) => {
try {
console.log("roverName", roverName)
// use http here
await fetch(`http://localhost:3000/roverInfo/${roverName}`)
.then((res) => {
return res.json();
})
.then((rovers) => updateStore(store, { rovers }));
} catch (error) {
console.log("errors:", error);
}
};
推荐阅读
- c# - C# 中 *is* 关键字的新条件语法
- python - python - TypeError:'NoneType'对象不可调用
- node.js - 处理不同的路由 node.js
- c++ - C ++中迭代器类中的运算符重载
- sql - 如何获取小于或等于当前日期的最新“生效日期”
- html - 如何使用 div 和 label 组件制作类似字段集的组件?
- rxjs - Angular2:在调用方法之前获取服务的属性值
- docker - Docker-compose 完全忽略了我包含环境变量的文件
- java - Eclipse Maven 项目:是否可以将一个版本的 JDK 用于项目,而将另一个版本的 JDK 用于测试?
- python - 使用单行代码迭代一列以基于逻辑创建另一列