Lucky 移动端开发实战:3 步对接 API,把公网服务器管理装进口袋

Lucky 移动端开发实战:3 步对接 API,把公网服务器管理装进口袋 Lucky 移动端开发实战3 步对接 API把公网服务器管理装进口袋【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/luckyLucky 是一款软硬路由公网管理工具提供 IPv4/IPv6 端口转发、反向代理、DDNS、WOL 网络唤醒等功能。它的管理后台是一套标准 RESTful API全部走 HTTP天然适合移动端对接。你在手机上装一个自己的 APP出差路上就能开关转发规则、检查 DDNS 同步结果、一键唤醒家里的 NAS——这就是本文要讲的事Lucky 移动端开发中的 API 对接与远程管理实践。Lucky 的仓库地址为https://gitcode.com/GitHub_Trending/luc/luckyclone 下来之后所有接口的真实定义都在 web/ 目录的 Go 文件里前端调用封装在 web/adminviews/src/apis/对照着看比任何文档都快。动手前先摸清楚这 4 个事实在写第一行请求代码之前先把服务端的四个基本盘搞清楚后面 90% 的坑都来自这里。管理后台默认监听 16601 端口支持 HTTP/HTTPS配置定义见 config/config.go。接口统一返回ret字段0成功非 0 失败且带msg说明原因。注意 HTTP 状态码基本都是 200判断成败要看ret不能只看 HTTP 码。鉴权用 JWT Token放在请求头Authorization里也可走 query 参数校验逻辑见 web/web.go 的tokenCheck。外网默认禁止访问。服务端有checkLocalIP中间件客户端 IP 不是内网地址且没开允许外网访问开关时直接返回 403。你想在手机上远程管理第一步是去设置页把这个开关打开。常用接口一览完整路由注册见 web/web.go模块列表增删/改开关/动作登录—POST /api/login——状态GET /api/status———端口转发GET /api/portforwardsPOST /api/portforwardPUT /api/portforwardGET /api/portforward/enable?keyenableDDNSGET /api/ddnstasklistPOST /api/ddnsPUT /api/ddns?keyGET /api/ddns/enable?keyenable反向代理GET /api/reverseproxyrulesPOST /api/reverseproxyrulePUT /api/reverseproxyruleGET /api/reverseproxyrule/enableWOL 设备GET /api/wol/devicesPOST /api/wol/devicePUT /api/wol/deviceGET /api/wol/device/wakeup?key登录拿 Token 的最小流程登录接口只认两个字段且注意是首字母大写的 JSON 键// POST /api/login const res await fetch(${base}/api/login, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ Account: admin, Password: xxxx }) }); const data await res.json(); // data.ret 0 时data.token 就是 JWT有效期 24 小时拿到 token 后存进本地安全存储后续每个请求带上请求头即可const status await fetch(${base}/api/status, { headers: { Authorization: token } });Token 会失效怎么治有两点必须知道Token 有效期 24 小时超期后接口返回ret: -1, msg: 登录失效。每次成功登录都会刷新服务端的登录随机键FlushLoginRandomKey这意味着旧 token 会立刻作废——你手机登录后再在电脑浏览器登录手机这边就失效了。移动端的标准解法封装一个请求拦截器只要响应里ret -1且msg为登录失效就自动重新走一次登录、换新 token 再重试原请求一次。另外建议在 App 启动时和进入前台时各做一次GET /api/status探活既能当心跳检测也能提前发现 token 过期。首页状态面板4 个数据点就够了移动端首页别贪多GET /api/status返回的数据里挑 4 个最有信息量的做成卡片字段含义展示建议runTime程序已运行时长判断服务是否异常重启usedMem/totleMem系统内存用量进度条currentProcessUsedCPULucky 自身 CPU 占用百分比文本currentTCPConnections当前 TCP 转发连接数数字卡片突增时提醒const r await fetch(${base}/api/status, { headers: { Authorization: token } }); const { data } await r.json(); // data.runTime / data.usedMem / data.currentTCPConnections ...规则类 API 的通用套路以端口转发为例端口转发、DDNS、反向代理的 API 形态几乎一样学会一个就全通了列表用复数路径GET /api/portforwards返回规则数组每条带Key、Enable、Name、监听/目标地址端口等字段结构定义见 config/portforward.go。新增用POSTbody 是完整规则 JSON修改用PUT同样传完整规则。删除、开关走DELETE/GET参数挂在 query 上核心是key。开关一条规则就是最简单的一次调用// 开启名为 key 的转发规则 await fetch(${base}/api/portforward/enable?key${key}enabletrue, { headers: { Authorization: token } });移动端列表页只需要渲染Name、ForwardTypestcp4/tcp6 标签、ListenPorts→TargetPorts行尾放一个和Enable状态联动的开关控件调上面的 enable 接口即可体感和官网 Web 界面一致。DDNS 任务列表一个容易忽略的前置开关拉取 DDNS 任务列表的接口是GET /api/ddnstasklist但源码里有个前置判断如果 DDNS 总开关没打开直接返回ret: 6并提示请先在设置页面启用DDNS动态域名服务。移动端处理时要区分这两种情况ret: 0正常渲染任务卡同步结果、公网 IP、最后检测时间都在任务对象里ret: 6则展示一个去开启的空态引导而不是当报错处理。任务详情参考新增任务走POST /api/ddnsbody 是DDNSTask结构任务名、DNS 服务商、域名列表、获取公网 IP 方式等字段可对照 config/ddns.go 填写。WOL 远程唤醒移动端最实用的一键操作WOL 是移动端收益最高的功能——人在外面一键把家里关机的设备叫醒。两步// 1. 拉设备列表取设备的 Key const r await fetch(${base}/api/wol/devices, { headers: { Authorization: token } }); const { list } await r.json(); // 2. 一键唤醒key 来自列表 await fetch(${base}/api/wol/device/wakeup?key${list[0].Key}, { headers: { Authorization: token } });注意wakeup接口只负责发魔法包返回ret: 0不代表设备已经开机。建议 UI 上做唤醒中→已发送的状态过渡别给用户点一下设备就亮了的错觉。避坑清单新手最常踩的 5 个坑外网访问没开手机上连不上时先查是不是 403 外网禁止访问去设置页打开允许外网访问。JSON 键首字母大写Account、Password、Key不是小写直接抄前端封装web/adminviews/src/apis/里的写法最稳。只看 HTTP 状态码Lucky 的失败大多是 HTTP 200 ret ! 0一定要看ret和msg。多端互踢任何一次新登录都会使旧 token 失效移动端务必实现失效自动重登逻辑。GET 请求加防缓存参数官方前端所有 GET 都带_时间戳弱网环境下能避免拿到旧的缓存响应建议照做。下一步挑你最常用的一个功能做垂直切片先用 30 行代码跑通登录 → 拉状态 → 拉 WOL 设备 → 唤醒这条链路能真实唤醒家里一台设备再回头补列表页和开关控件。链路上每个环节都对应本文给过的接口对着 web/ 目录逐条验证即可一个周末足够出第一个可用版本。【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/lucky创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考