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

如何在Expo React Native安卓应用中开启HTTP本地端口创建API路由

解决Expo Android应用中创建本地API路由的问题

方案1:使用expo-local-server启动本地HTTP服务器

这个库专为Expo应用设计,可直接在设备内启动本地服务器,支持Android和iOS:

  1. 安装依赖:
npx expo install expo-local-server
  1. 服务器代码示例:
import { startServerAsync } from 'expo-local-server';
import express from 'express';

const app = express();
app.use(express.json());

// 定义测试API路由
app.get('/api/test', (req, res) => {
  res.json({ message: '本地API请求成功' });
});

// 启动服务器
async function startLocalServer() {
  try {
    const { port } = await startServerAsync(app);
    console.log(`本地服务器运行在端口 ${port}`);
    // 应用内直接访问地址:http://localhost:${port}/api/test
  } catch (error) {
    console.error('启动服务器失败:', error);
  }
}

startLocalServer();
  1. 注意事项:
    • Android设备上localhost和127.0.0.1均指向设备本身,直接使用即可
    • 确保app.json中配置了INTERNET权限(Expo默认已包含,自定义权限列表时需确认)

方案2:Express + Expo网络配置

无需专用库,用Express配合expo-network绑定设备本地IP:

  1. 安装依赖:
npx expo install express expo-network
  1. 代码示例:
import express from 'express';
import * as Network from 'expo-network';

const app = express();
app.use(express.json());

// 定义数据接口
app.get('/api/data', (req, res) => {
  res.send({ data: '来自本地API的内容' });
});

async function startServer() {
  const localIp = await Network.getIpAddressAsync();
  const port = 3000;
  
  app.listen(port, localIp, () => {
    console.log(`服务器运行在 http://${localIp}:${port}`);
    // 应用内访问可用 http://localhost:3000 或 http://${localIp}:3000
  });
}

startServer();
  1. 关键说明:
    • 绑定本地IP后,同一局域网设备也可访问;仅应用自身访问时,localhost更便捷
    • Android系统限制低端口使用,建议选择1024以上端口(如3000、8080)

常见问题排查

  • 端口占用:通过expo-local-server自动分配可用端口,或手动更换其他端口
  • 权限缺失:检查app.json的android.permissions是否包含INTERNET
  • 模拟器/真机差异:Android模拟器用10.0.2.2指向电脑localhost;真机本地服务器直接用localhost

内容的提问来源于stack exchange,提问作者nguyễn huy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:43:16