更新记录

1.1.2(2026-04-15)

  • 新增 iOS 平台支持,使用 TCPSocketServer 实现 HTTP 服务
  • 支持 HTTP 请求处理和响应
  • 支持代理转发功能
  • 支持 CORS 跨域访问

1.1.1(2026-04-14)

更新demo

1.1.0(2026-04-14)

  • 新增 iOS 平台支持,使用 Network 框架实现 HTTP 服务器
  • 完善静态文件服务,支持 iOS 和 Android 双平台
  • 添加路径存在性检查,自动处理无效根目录
  • 优化回调函数生命周期管理,防止异步操作完成前释放
  • 完善 MIME 类型识别,支持常见文件类型
  • 支持代理规则管理和 HTTP 请求转发
  • 支持 CORS 跨域访问
  • 提供 getStaticPath 方法获取静态目录绝对路径
查看更多

平台兼容性

uni-app(5.05)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(4.87)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × -

d-http-server

HTTP 服务器插件,支持在 Android、iOS 和 HarmonyOS 平台上创建本地 HTTP 服务器。

当前版本:v1.1.0

功能特性

  • 支持 Android、iOS、HarmonyOS 三平台
  • 支持自定义端口配置
  • 支持 CORS 跨域配置
  • 支持静态文件服务(HTML、CSS、JS、图片等)
  • 支持 API 代理转发
  • 支持添加/移除代理规则
  • 提供启动、停止、状态查询功能
  • 提供 getStaticPath 方法获取静态目录绝对路径
  • 精简设计,适合打包自定义基座

技术实现

  • Android:使用 NanoHTTPD 库(轻量级 HTTP 服务器)
  • iOS:使用 Network 框架(NWListener)实现
  • HarmonyOS:使用 TCPSocketServer 实现 HTTP 协议

快速开始

1. 配置运行环境(仅自定义基座需要)

在 HBuilderX 中打包自定义基座前,需要配置 Android 运行环境:

  • Gradle:7.5 及以上版本(不支持 9.0.0+)
  • JDK:17 及以上版本
  • Android SDK:build-tools 30.0.0+,platforms android-30+

配置路径:HBuilderX → 设置 → 运行配置

2. 在页面中使用

import * as HttpServer from '@/uni_modules/d-http-server'

// 启动服务器
HttpServer.startServer({
  port: 8080,
  allowCors: true,
  success: (res) => {
    console.log('服务器启动成功:', res.message)
  },
  fail: (res) => {
    console.log('服务器启动失败:', res.errMsg)
  }
})

// 停止服务器
HttpServer.stopServer({
  success: (res) => {
    console.log('服务器停止成功:', res.message)
  }
})

// 获取服务器状态
HttpServer.getServerStatus({
  success: (res) => {
    console.log('服务器状态:', res.running ? '运行中' : '未运行')
  }
})

API 接口

startServer - 启动 HTTP 服务器

参数

  • port:端口号(必填)
  • rootPath:根目录路径(可选)
  • allowCors:是否允许 CORS(可选,默认 false)
  • proxyEnabled:是否启用代理(可选,默认 false)
  • proxyRules:代理规则数组(可选)
  • success:成功回调
  • fail:失败回调
  • complete:完成回调

返回值

  • success:是否成功
  • message:操作信息
  • serverId:服务器 ID(格式:平台_端口
  • ipAddress:服务器 IP 地址
  • accessUrl:可访问的 URL 地址
  • rootPath:根目录路径

示例

HttpServer.startServer({
  port: 8080,
  rootPath: '/static',
  allowCors: true,
  proxyEnabled: true,
  proxyRules: [
    { path: '/api', target: 'https://api.example.com' }
  ],
  success: (res) => {
    console.log('服务器地址:', res.accessUrl)
  },
  fail: (err) => {
    console.log('启动失败:', err.errMsg)
  }
})

stopServer - 停止 HTTP 服务器

参数

  • success:成功回调
  • fail:失败回调
  • complete:完成回调

返回值

  • success:是否成功
  • message:操作信息

getServerStatus - 获取服务器状态

参数

  • success:成功回调
  • fail:失败回调
  • complete:完成回调

返回值

  • running:是否运行中
  • port:端口号
  • rootPath:根目录路径
  • serverId:服务器 ID
  • ipAddress:服务器 IP 地址
  • accessUrl:可访问的 URL 地址

addProxyRule - 添加代理规则

参数

  • rule:代理规则对象(必填)
    • path:代理路径前缀(如 /api
    • target:目标服务器地址(如 https://api.example.com
    • method:请求方法(可选,可选值:GETPOSTPUTDELETEPATCHALL,默认 ALL
    • headers:自定义请求头(可选,Map 类型)
    • timeout:超时时间(可选,单位毫秒,默认 30000)
  • success:成功回调
  • fail:失败回调
  • complete:完成回调

返回值

  • success:是否成功
  • message:操作信息
  • ruleId:规则 ID(通常是 path)

示例

HttpServer.addProxyRule({
  rule: {
    path: '/api',
    target: 'https://api.example.com',
    method: 'ALL',
    timeout: 30000
  },
  success: (res) => {
    console.log('代理规则已添加:', res.ruleId)
  },
  fail: (err) => {
    console.log('添加失败:', err.errMsg)
  }
})

removeProxyRule - 移除代理规则

参数

  • path:代理路径(必填)
  • success:成功回调
  • fail:失败回调
  • complete:完成回调

返回值

  • success:是否成功
  • message:操作信息

示例

HttpServer.removeProxyRule({
  path: '/api',
  success: (res) => {
    console.log('代理规则已移除')
  }
})

getProxyRules - 获取代理规则列表

参数

  • success:成功回调
  • fail:失败回调
  • complete:完成回调

返回值

  • success:是否成功
  • rules:代理规则数组
  • count:规则数量

错误码

遵循 uni 错误码规范,以 90 开头:

  • 9010001:服务器启动失败
  • 9010002:服务器停止失败
  • 9010003:服务器配置错误(端口无效等)
  • 9010004:服务器状态获取失败
  • 9010005:代理规则操作失败
  • 9010006:代理请求转发失败

注意事项

  1. 端口选择

    • 避免使用系统保留端口(1-1023)
    • 建议使用 8000-9999 范围内的端口
    • 确保端口未被其他应用占用
  2. 权限配置

    • Android:已自动配置 INTERNET 权限
    • HarmonyOS:使用系统内置 API,无需额外权限
  3. 自定义基座打包

    • 首次打包会自动下载 NanoHTTPD 依赖(约 70KB)
    • 确保网络连接正常,能访问 Maven 中央仓库
    • 打包成功后,依赖会缓存在自定义基座中
  4. 代理功能使用

    • 代理功能用于将本地服务器的请求转发到目标服务器
    • 代理路径支持前缀匹配,如 /api 会匹配 /api/user/api/list
    • 目标地址需要以 http://https:// 开头
    • 代理支持所有 HTTP 方法(GET、POST、PUT、DELETE、PATCH)
    • 可以设置自定义请求头和超时时间
  5. 使用场景

    • 适用于本地开发、调试和测试
    • 可作为本地 API 服务器
    • 可用于跨域访问和 API 代理转发
    • 不建议用于生产环境的高性能场景

平台兼容性

平台 支持情况 最低版本 依赖库 说明
Android ✅ 完整支持 Android 5.0 (API 21) NanoHTTPD 2.3.1 完整 HTTP 服务器功能
iOS ✅ 完整支持 iOS 12.0 NWListener 完整 HTTP 服务器功能
HarmonyOS ✅ 完整支持 HarmonyOS API 10 @ohos.net.socket 基于 TCP Socket 实现 HTTP 协议

版本历史

1.1.2(2026-04-15)

  • 完善 HarmonyOS 平台实现,使用 TCPSocketServer 实现 HTTP 服务
  • 支持 HTTP 请求处理和响应
  • 支持代理转发功能
  • 支持 CORS 跨域访问

1.1.1(2026-04-14)

  • 修复 HarmonyOS 平台编译错误
  • 优化 HarmonyOS 平台实现为模拟模式

1.1.0(2026-04-14)

  • 新增 iOS 平台支持,使用 Network 框架实现 HTTP 服务器
  • 完善静态文件服务,支持 iOS 和 Android 双平台
  • 添加路径存在性检查,自动处理无效根目录
  • 优化回调函数生命周期管理,防止异步操作完成前释放
  • 完善 MIME 类型识别,支持常见文件类型
  • 支持代理规则管理和 HTTP 请求转发
  • 支持 CORS 跨域访问
  • 提供 getStaticPath 方法获取静态目录绝对路径

1.0.0(2026-04-14)

  • 初始版本
  • 支持 Android 平台
  • 实现基本的 HTTP 服务器功能
  • 支持 CORS 跨域配置
  • 精简设计,适合自定义基座打包

技术支持

如有问题,请参考:

隐私、权限声明

1. 本插件需要申请的系统权限列表:

需要网络权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。