Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取路由正确,但api仍不工作(不获取任何内容)_Javascript_Express - Fatal编程技术网

Javascript 获取路由正确,但api仍不工作(不获取任何内容)

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

我正在尝试为此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/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问题的解决方案。