Express中使用axios发送请求到Python(服务端)

128 阅读2分钟

🏠某知识点

有无其他知识 或 前置知识

正常情况下:我们是可以在Express去发送请求滴...... 目前我在:使用Express -> axios.get(url) -> Python(flask)某个服务 出了问题 原因:python的flask默认是 127.0.0.1,我当时设置了localhost,就用的localhost请求, 应该用127.0.0.1做请求 AI解释:Flask的默认启动地址确实是127.0.0.1(本地回环地址),但是可以配置为localhost。不过,需要注意的是,使用axios(或其他HTTP请求库)发起请求时,如果你使用localhost作为请求的目标地址,它将默认使用浏览器的同源策略,这可能导致跨域请求问题。 在大多数情况下,将Flask应用程序的地址设置为127.0.0.1或localhost应该都可以正常工作,但是要确保在axios请求中使用 ~~与Flask应用程序运行的地址匹配的目标地址。 ~~只能用localhost

🔗代码链接

代码块

我首先就是在express的某个api里去请求了python 的某个api

router.get('/week/frequency', async function (req, res, next) {
  const { time, name } = req.query;
  const apiUrl = `http://localhost:3001/student/week?time=${time}&name=${name}`;
  try {
    const response = await axios.get(apiUrl);
    const responseData = response.data;
    res.json(responseData);
  } catch (error) {
    res.status(500).json({ message: 'python request is failed' });
  }
});

错误来咯

image.png 这个"::1"应该就是localhost,所以我找了一些答案并做出了尝试。

✅我的做法

大体逻辑

第一步

将localhost换成了127.0.0.1 解决问题....

🎦结论

回顾描述与评价

请注意,你某个服务的地址和端口 一定要对应上,尤其是python,它现在默认就是127.0.0.1,不能用localhost,即使你再python里设定了启动为localhost也不行。不知道为啥 如果你的地址确定能访问,就要相信自己是对的。二选一 就知道谁错了: )

最后,有用点个赞吧? 👀