Lucky 移动端 API 对接完整指南:快速打造随身远程管理 App
【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/lucky
Lucky 是一款软硬路由公网神器,集 ipv4/ipv6 端口转发、反向代理、DDNS 域名同步、WOL 网络唤醒于一体。本文面向想给 Lucky 做一个移动端 App 的新手,带你从零跑通Lucky API对接:怎么登录拿 Token、端口转发/DDNS/唤醒这些常用接口怎么调、哪里最容易翻车。读完你手上就是一个能随时查状态、改规则、远程开机的完整方案,不用再被"管理后台只能在电脑上打开"限制住。
为什么值得自己搓一个移动端
先说场景:Lucky 跑在软路由或光猫上,管理后台默认监听16601端口,浏览器访问很方便。但出门在外时你可能就想要几件事——
- 看一眼 DDNS 任务是不是还在正常同步(IP 换了域名没跟上,网站直接挂)
- 确认某条端口转发规则还开着
- 家里 PC 睡了,远程唤醒一下
这些操作在手机浏览器里点来点去很痛苦,原生 App 或者套壳 H5 体验会好很多。而 Lucky 的所有功能都有对应的 RESTful 接口,官方 Web 后台本身就是调同一套 API 的,所以"移动端开发"本质就是复用官方 Web 前端的请求逻辑,不用自己发明协议。
最小可用方案:登录 + 一个 Token
整个对接只有一道门槛:Token。除了/api/login,所有接口都要在请求头里带上Authorization,后端会逐个校验。
登录接口接受 JSON,注意字段是首字母大写的Account/Password:
// POST http://路由IP:16601/api/login const { token } = await post('http://192.168.31.1:16601/api/login', { Account: 'admin', Password: '你的管理密码' }) // 之后所有请求都带上它 const rules = await get('/api/portforwards', { headers: { Authorization: token }, params: { _: Date.now() } // 防缓存参数,前端一直这么干 })拿到的 Token 是一个有效期 24 小时的 JWT,存本地即可,不用频繁重新登录。官方前端的请求封装可以直接抄思路:web/adminviews/src/request/ 里用 axios 统一设置了Content-Type: application/json、5 秒超时,并在响应ret === -1时自动跳回登录页。
分场景拆解:五类高频接口
状态与日志:App 首页数据源
首页仪表盘的数据基本就靠这两个接口轮询:GET /api/status拿系统运行状态,GET /api/logs?pre=时间戳增量拉日志(pre传上次拉取的时间戳即可)。再配上GET /api/info看版本信息,一个状态卡片就齐了。
端口转发:规则的增删改查
这是移动端最常用的模块,接口模式是典型的"列表用复数、操作走单数":
| 动作 | 方法与路径 |
|---|---|
| 规则列表 | GET /api/portforwards |
| 新增规则 | POST /api/portforward |
| 修改规则 | PUT /api/portforward |
| 删除规则 | DELETE /api/portforward?key=规则key |
| 启用/停用 | GET /api/portforward/enable?key=&enable= |
| 规则日志 | GET /api/portforward/logs?key=&page=&pageSize= |
规则支持 tcp4/tcp6 端口范围、目标 IP、黑白名单与 256 端口参数,界面上的开关按钮对应的就是 enable 接口,移动端做一个 Toggle 直接复用即可。
DDNS:任务同步状态与 IP 历史
DDNS 模块接口同构:GET /api/ddnstasklist拉任务,POST /api/ddns添加,PUT/DELETE /api/ddns?key=改删,GET /api/ddns/enable切换开关。任务详情里能看到公网 IP、TTL、最后检测时间,移动端做成时间线展示最直观——
反向代理与 SSL 证书
反向代理同样是列表复数、操作单数:GET /api/reverseproxyrules、POST/PUT/DELETE /api/reverseproxyrule,开关走GET /api/reverseproxyrule/enable?ruleKey=&proxyKey=&enable=,日志走GET /api/reverseproxyrule/logs。SSL 证书管理在/api/ssl上做全套增删改查,移动端如果做"一键申请证书"页面,直接对接它就行。
WOL 网络唤醒:手机端最能打的场景
WOL 是移动端体验提升最大的模块——躺在床上喊设备开机。接口只有五个,全都围绕"设备":
| 动作 | 方法与路径 |
|---|---|
| 设备列表 | GET /api/wol/devices |
| 添加设备 | POST /api/wol/device |
| 修改设备 | PUT /api/wol/device |
| 删除设备 | DELETE /api/wol/device?key= |
| 唤醒设备 | GET /api/wol/device/wakeup?key= |
唤醒就是一个 GET 请求,一行搞定:
await get(`/api/wol/device/wakeup?key=${deviceKey}&_=${Date.now()}`, { headers: { Authorization: token } })踩坑清单:这些地方最容易翻车
🔑字段大小写:登录报"登录失败,登录请求解析出错",九成是字段写成了username/password。后端解析的是Account/Password,一个字母都不对。
⚠️Token 失效别死磕:接口返回ret: -1, msg: "登录失效"说明 Token 无效或已过期(24 小时)。另外注意——在后台改了管理员密码,旧 Token 立刻全部作废(登录时机的随机 key 会变),移动端收到ret=-1的正确姿势是清 Token、跳登录,而不是无限重试。
🛠️防登录锁:连续输错密码 99 次,登录功能会被禁用,只能重启 Lucky 程序。移动端做暴力重试策略前务必先读这条。
💡性能优化四件套:规则列表这类高频数据做本地缓存;首页对/api/status做心跳轮询而不是长连接;网络抖动时对唤醒、保存这类写操作做有限次重试;关键配置本地留一份,断网恢复后再同步。
延伸资源:源码就是最佳文档
- 后端全部路由注册在一处:web/web.go,想看某个模块的完整接口表直接翻它
- 前端每个接口的请求写法:web/adminviews/src/apis/,移动端照着改就行
- 各模块配置结构定义:config/,请求体的字段名、类型一目了然
- 界面截图参考:previews/,设计移动端页面时对着做
- 想本地跑起来看接口:
git clone https://gitcode.com/GitHub_Trending/luc/lucky
接口清单就这么多,登录换 Token 之后剩下的都是 CRUD 的排列组合。现在就去把 Token 跑通,你的 Lucky 移动端第一个页面半小时就能上线 🚀
【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/lucky
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考