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

React应用使用Fetch调用Express接口从MongoDB取数的疑问

问题解答

1. React完全可以使用Fetch请求

Fetch是浏览器原生的HTTP请求API,无需额外安装依赖,非常适合新手快速实现前后端数据交互。你可以直接在React组件的useEffect钩子或者事件处理函数里调用它。

2. 请求URL的指向规则

URL写法分开发环境和**生产环境(同主机部署)**两种场景:

开发环境(前后端本地分开运行)

通常React默认跑在http://localhost:3000,Express API跑在另一个端口(比如http://localhost:5000),这时候必须写完整的API地址,同时要在Express后端配置CORS(安装cors包并启用),避免浏览器跨域拦截。
示例代码:

// React组件中调用Fetch获取数据
useEffect(() => {
  fetch('http://localhost:5000/api/items')
    .then(response => response.json())
    .then(data => console.log('获取到的数据:', data))
    .catch(error => console.error('请求失败:', error));
}, []);

生产环境(前后端同主机部署)

如果前后端部署在同一个域名下(比如前端静态文件由Express托管,或通过Nginx反向代理),可以直接使用相对路径。浏览器会自动拼接当前页面的域名,这样换域名时无需修改前端代码。
假设你的Express API路由前缀是/api,示例代码:

fetch('/api/items')
  .then(response => response.json())
  .then(data => console.log('获取到的数据:', data))
  .catch(error => console.error('请求失败:', error));

比如你的站点域名是https://yourdomain.com,浏览器会自动把请求发送到https://yourdomain.com/api/items。

3. 关于前后端分离的选择

你放弃直接调用MongoDB API、选择前后端分离的思路是完全正确的:

  • 直接在前端调用MongoDB API需要暴露数据库密钥,极不安全,任何人都能通过浏览器控制台窃取密钥操作你的数据库;
  • 后端Express作为中间层,可以统一处理认证、权限校验、业务逻辑,再和MongoDB交互,既能保证数据安全,也便于后续扩展功能(比如添加缓存、日志等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:26:06