Javascript 获取路由正确,但api仍不工作(不获取任何内容)
我正在尝试为此API创建一个get路由: 尽管get路由的语法是正确的,但API在postman和客户端中仍然不起作用 以下是获取路线代码:Javascript 获取路由正确,但api仍不工作(不获取任何内容),javascript,express,Javascript,Express,我正在尝试为此API创建一个get路由: 尽管get路由的语法是正确的,但API在postman和客户端中仍然不起作用 以下是获取路线代码: 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/rove
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
建议:不要将wait/async与混合使用。然后,使用其中一种
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。需要将漫游者名称传递给参数,而不是使用:漫游者名称
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);
}
};
连接到本地主机时,您有
https
,对吗?@paintopi我已修复,但在您的客户端请求中仍然没有结果,您需要填写rover\u name
的实际值。所以,不要请求https://localhost:3000/roverInfo/:rover_name
。相反,将实际值替换为:rover\u name
,如https://localhost:3000/roverInfo/myrover
或不管路虎名称是什么。我现在实现了这一点,但似乎缺少了一些东西,因为迄今为止没有获取任何东西。我用wait res.json()更新了答案代码>。你改变了吗?是的,不幸的是,我得到了错误的RoversUpdate答案,前端没有将rover名称传递给后端。:rover_name
应在前端用RoverName替换,而不要混合。then()
和wait
的建议通常是合理的,这段代码在这方面的编写方式不会导致任何问题,改变这一点并不是OP问题的解决方案。