WIS Bridge 无线网桥 REST API 配置说明

基于 HTTP Basic 认证的无线网桥 REST API 接口指南

WIS 无线网桥 REST API 配置说明:覆盖认证方式、响应格式、查询接口、三段式配置修改流程、配置导出导入、设备维护、常见异常测试与字段说明,适用于自动化开局与批量运维场景。

1. 概述

REST API 是通过 HTTP 协议在预定义的一组面向资源的 URL 上访问的接口。WIS 无线网桥的 REST API 以 JSON 包装器形式实现,支持对设备资源的创建、读取、更新和删除(CRUD)操作,可满足自动化开局、批量配置、状态监控与远程运维等需求。

本文所有主流程示例均采用 HTTP Basic 认证,每条命令直接携带用户名和密码。默认设备地址为 192.168.1.2,账号密码为 root/admin

2. 使用准备

以下命令均在 Windows cmd.exe 中执行。设备使用自签名 HTTPS 证书,curl 需加 -k 参数跳过证书校验;如出现中文乱码,可先执行 chcp 65001 切换控制台编码。

API 基础地址与设备管理页面的访问方式保持一致,设备默认使用 HTTPS 连接:

  • HTTPS 登录管理页面时,使用 https:///cgi-bin/api/v1
  • HTTP 登录管理页面时,使用 http:///cgi-bin/api/v1

curl 常用参数说明如下:

参数 说明
-k 跳过 HTTPS 证书校验,适用于设备自签名证书测试。
-u root:admin 使用 HTTP Basic 认证,root 为用户名,admin 为密码。
-X PUT / -X POST 指定写入、提交、重启、恢复出厂、升级等操作的请求方法。
-H "Content-Type: application/json" 请求体为 JSON 时使用。
-d @文件名 从本地 JSON 文件读取请求体,适合复杂 JSON。
-o 文件名 把接口返回保存到本地文件。

3. 认证方式

HTTP Basic 认证直接使用设备 Web 登录账号和密码,每次请求携带 -u root:admin,无需先登录获取 token,便于脚本化调用。

curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/system/info

认证成功时返回 ok=true 并在 data 中携带设备信息;密码错误或未携带认证信息时返回认证失败(401)。

4. 响应格式与状态码

接口成功时返回 ok=true;失败时返回 ok=falseerror 对象:

{ "ok": true, "data": { } }
{ "ok": false, "error": { "code": 401, "message": "authentication required" } }
状态码 含义 说明
200 成功 请求已成功处理。
400 参数错误 请求参数或 JSON 请求体格式不正确。
401 未认证 用户名密码错误,或请求未携带认证信息。
404 端点或配置不存在 请求路径不存在,或指定配置文件、配置段不存在。
405 方法不允许 当前端点不支持该请求方法。
500 设备内部错误 设备处理请求时发生内部错误。

5. 查询接口

5.1 查看设备信息

curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/system/info

成功时返回 ok=true,包含主机名、型号、固件版本、序列号、MAC 地址、IP 地址等设备信息。返回示例:

{ "ok": true, "data": { "hostname": "Wireless-Bridge", "serial_number": "W0B32250200113", "manufacturer": "WIS", "model": "X619", "model_number": "IPQ5018/AP-MP03.5-C1", "hardware_version": "v0", "software_version": "develop_version", "board_name": "qcom,ipq5018-ap-mp03.5-c1", "system_type": "ARMv7 Processor rev 4 (v7l)", "kernel": "5.4.213", "firmware": "OpenWrt 23.05-SNAPSHOT r0-3c83419af", "firmware_version": "23.05-SNAPSHOT", "firmware_revision": "r0-3c83419af", "target": "ipq50xx/ipq50xx_32", "rootfs_type": "squashfs", "uptime_seconds": 3491, "local_time": 1788960711, "mac_addresses": { "ath1": "de:36:43:32:7c:57", "bond0": "92:ac:2c:74:7e:6c", "br-lan": "dc:36:43:32:7c:54", "eth0": "dc:36:43:32:7c:54", "gre0": "00:00:00:00", "ip6gre0": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", "ip6tnl0": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00", "sit0": "00:00:00:00", "wifi0": "00:03:7f:12:31:31", "wifi1": "dc:36:43:32:7c:57" }, "ip_addresses": [ { "device": "br-lan", "address": "192.168.1.2/24" } ], "status": "online" } }

5.2 查看运行状态

curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/system/status

成功时返回 ok=true,包含 uptime、CPU、内存、网络接口、无线状态和客户端信息。

5.3 查看配置文件列表

curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/config

成功时返回 ok=true,列出设备当前支持读取的配置文件名称。

5.4 读取无线配置

curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/config/wireless

成功时返回 ok=true,包含 wireless 配置文件下的全部配置段。返回示例:

{ "ok": true, "data": { "file": "wireless", "sections": [ { ".type": "wifi-device", ".name": "wifi0", ".anonymous": false, "type": "qcawificfg80211", "channel": "auto", "macaddr": "dc:36:43:32:7c:56", "hwmode": "11axg", "disabled": "1" }, { ".type": "wifi-iface", ".name": "cfg023579", ".anonymous": true, "device": "wifi0", "network": "lan", "mode": "ap", "ssid": "wireless-bridge", "encryption": "none" }, { ".type": "wifi-device", ".name": "wifi1", ".anonymous": false, "type": "qcawificfg80211", "channel": "45", "macaddr": "dc:36:43:32:7c:57", "hwmode": "11axa", "band": "3", "country": "00", "txpower": "26", "htmode": "HT160", "superos_antgain": "19" }, { ".type": "wifi-iface", ".name": "wifinet1", ".anonymous": false, "device": "wifi1", "network": "lan", "mode": "ap", "ssid": "wireless-bridge", "encryption": "ccmp", "key": "12345678", "en_6g_sec_comp": "0", "sae": "1", "wds": "1", "vlan_tag": "1", "ieee80211w": "1", "add_sha256": "1" } ] } }

5.5 读取指定配置段

curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/config/wireless/wifi1

成功时返回 ok=true 及对应配置段。section 可使用名称或类型索引。

5.6 查看在线规范

curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/openapi.json

成功时返回 OpenAPI JSON,可用于核对设备端当前暴露的全部接口。

6. 配置修改流程

配置修改采用三段式流程:先暂存修改 → 查看暂存内容 → 确认后应用;如不提交,可随时回退暂存修改。

6.1 准备无线配置请求文件

> put.json echo {"set":{"wifinet1":{"ssid":"wireless-bridge-X6-Test123","key":"12345678a12"},"wifi1":{"txpower":"1"}}}

作用:生成 put.json。复杂 JSON 建议先写入文件,再用 -d @put.json 提交,避免 cmd 引号转义出错。

type put.json | python -m json.tool

作用:格式化检查 put.json,能正常缩进输出即表示 JSON 格式正确。

6.2 暂存无线配置修改

curl -k -u root:admin -X PUT https://192.168.1.2/cgi-bin/api/v1/config/wireless -H "Content-Type: application/json" -d @put.json

成功时返回 ok=true 并提示 changes staged,此时配置已暂存、尚未生效。

6.3 查看暂存修改

curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/config/pending

成功时返回 ok=true,显示当前待提交的配置修改。

6.4 应用暂存修改

curl -k -u root:admin -X POST https://192.168.1.2/cgi-bin/api/v1/config/apply -H "Content-Type: application/json" -d "{}"

成功时返回 ok=true,设备提交配置并按配置类型重载服务。注意:无线或网络配置变更可能导致短暂断连。

6.5 回退暂存修改

curl -k -u root:admin -X POST https://192.168.1.2/cgi-bin/api/v1/config/revert -H "Content-Type: application/json" -d "{}"

成功时返回 ok=true,未提交的暂存修改被丢弃;配置一旦应用则无法回退。

7. 配置导出与导入

7.1 导出配置

(1)导出配置到 JSON

curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/system/config/export -o config-export.json

作用:把配置导出接口返回保存为 config-export.json,该文件包含 base64 编码的备份包内容。

(2)生成备份包 backup.tar.gz

python -c "import json,base64; d=json.load(open('config-export.json',encoding='utf-8'))['data']; open('backup.tar.gz','wb').write(base64.b64decode(d['content']))"

作用:从 config-export.json 的 data.content 解码,生成真正的配置备份包 backup.tar.gz。

(3)导出 UCI JSON

curl -k -u root:admin -X GET "https://192.168.1.2/cgi-bin/api/v1/system/config/export?format=json" -o config-export-uci.json

作用:导出可读的 UCI JSON 配置,便于查看配置内容;不等同于 sysupgrade 备份包。

7.2 导入配置

(1)生成导入请求文件

python -c "import base64,json; json.dump({'content':base64.b64encode(open('backup.tar.gz','rb').read()).decode()}, open('import.json','w',encoding='utf-8'))"

作用:把 backup.tar.gz 编码为接口可接收的 import.json。

(2)导入恢复配置

curl -k -u root:admin -X POST https://192.168.1.2/cgi-bin/api/v1/system/config/import -H "Content-Type: application/json" -d @import.json

成功时返回 ok=true 并提示配置已恢复,需重启设备使配置完全生效。

8. 设备维护

8.1 重启设备

curl -k -u root:admin -X POST https://192.168.1.2/cgi-bin/api/v1/system/reboot

作用:让设备重启。执行后设备会短时间无法访问,通常等待 2~5 分钟后再连接。

8.2 恢复出厂设置

curl -k -u root:admin -X POST https://192.168.1.2/cgi-bin/api/v1/system/factory-reset -H "Content-Type: application/json" -d "{\"confirm\":true}"

作用:让设备恢复出厂设置并重启。该操作会清空当前配置,执行前建议先导出备份。

9. 常见异常测试

以下为常见异常场景的测试命令与预期返回,可用于验证接口的鉴权与容错行为:

异常场景 测试命令 预期返回
错误密码 curl -k -u root:错误密码 -X GET https://192.168.1.2/cgi-bin/api/v1/system/info 认证失败:{ "ok": false, "error": { "code": 401, "message": "authentication required (login first)" } }
不带认证 curl -k -X GET https://192.168.1.2/cgi-bin/api/v1/system/info 未认证错误:{ "ok": false, "error": { "code": 401, "message": "authentication required (login first)" } }
不存在端点 curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/not-exist 端点不存在:{ "ok": false, "error": { "code": 404, "message": "unknown endpoint: GET /v1/not-exist" } }
不存在配置 curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/config/not_exist 配置不存在:{ "ok": false, "error": { "code": 404, "message": "config file \"not_exist\" not found" } }
方法不允许 curl -k -u root:admin -X GET https://192.168.1.2/cgi-bin/api/v1/config/apply 方法不允许:{ "ok": false, "error": { "code": 405, "message": "use POST" } }

10. 字段说明

本节列出常用配置项和返回字段,包含字段名称、用途说明和可填写范围。标注为"只读"的字段仅用于查看设备状态,不能通过配置接口修改;可配置字段请按现场网络规划和设备支持能力填写。

10.1 系统信息(GET /system/info)

系统信息接口的返回字段全部为只读,可用于资产登记与状态巡检:

返回字段 输入范围 说明
hostname 只读,不支持输入 主机名
serial_number 只读,不支持输入 序列号 SN
manufacturer 只读,不支持输入 厂商
model 只读,不支持输入 产品型号
software_version 只读,不支持输入 固件版本
uptime_seconds 只读,不支持输入 设备启动运行时长,单位秒
local_time 只读,不支持输入 设备当前时间,Unix 秒
mac_addresses 只读,不支持输入 设备MAC
ip_addresses 只读,不支持输入 设备IP
status 只读,不支持输入 在线状态

10.2 系统设置(system @system[0])

字段 类型 输入范围 说明
hostname string 1-63 个字符,建议字母、数字、短横线 主机名
zonename string 设备支持的时区名称,例如 UTC、Asia/Shanghai 时区
description string 0-255 个字符 设备描述
log_size int 正整数,单位 KB,以设备实际支持为准 日志缓冲区大小

10.3 网络设置 WAN(network)

WAN 端口仅路由模式下进行配置:

字段 类型 输入范围 说明
proto string dhcp / static / pppoe 地址类型
device string 设备已有网络设备名 绑定设备
ipaddr string 合法 IPv4 地址,proto=static 时使用 静态 IP
netmask string 合法 IPv4 子网掩码 子网掩码
gateway string 合法 IPv4 地址 网关
dns string/list 一个或多个合法 DNS 地址 DNS 服务器

10.4 网络 LAN(network lan)

字段 类型 输入范围 说明
proto string static,或设备实际支持的类型 地址类型
device string 设备已有网络设备名 桥接设备
ipaddr string 合法 IPv4 地址 LAN IP 地址
netmask string 合法 IPv4 子网掩码 子网掩码
gateway string 合法 IPv4 地址 网关(路由下不需要配置)

10.5 DHCP 服务器(dhcp lan)

仅路由模式下配置 DHCP 服务器:

字段 类型 输入范围 说明
interface string 设备已有接口名 绑定接口
start int 1-254,需在 LAN 网段内合理设置 起始地址偏移
limit int 1-254,不能超过网段可用地址数 可分配地址数量
leasetime string 数字加单位 s/m/h,例如 12h 租约时间
ignore int 0/1;0=开启 DHCP,1=关闭 DHCP DHCP 服务开关
dhcpv4 string server / disabled 或设备实际支持值 IPv4 DHCP 模式
force int 0/1 强制在接口上服务

10.6 无线射频(wireless wifi1)

字段 类型 输入范围 说明
type string 请勿修改 驱动类型
hwmode string 11beg=2.4G,11bea=5G;以固件支持为准 802.11 模式
channel int 0/auto 或设备支持的合法信道 信道
htmode string HT20 / HT40 / HT80 / HT160 信道带宽
txpower int dBm,受国家码和设备能力限制 发射功率
country int 设备支持的国家码 国家码

10.7 无线接口(wireless wifinet1)

字段 类型 输入范围 说明
device string wifi1 绑定射频
mode string ap / sta 工作模式
ssid string 1-32 个字符 无线名称
encryption string ccmp / psk2 / psk2+ccmp 或设备实际支持值 加密方式
key string 常见 PSK 为 8-63 个字符;开放网络不需要 无线密钥
sae int 0/1 WPA3/SAE 开关
wds int 1 WDS 桥接开关,必须设置1
en_6g_sec_comp int 0/1 或设备实际支持范围 配置6G信道配置0

10.8 端口转发(firewall redirect)

字段 类型 输入范围 说明
name string 1-64 个字符 条目名称
src string 设备已有防火墙区域,通常为 wan 源区域
dest string 设备已有防火墙区域,通常为 lan 目标区域
proto string/list tcp / udp / tcp udp 协议
src_dport int 1-65535 WAN 侧端口
dest_ip string 合法 IPv4 地址 内网终端 IP
dest_port int 1-65535 内网终端端口
target string DNAT 动作

11. 注意事项

  • HTTP Basic 会在每次请求中携带用户名和密码,测试环境应使用 HTTPS;
  • 配置修改只会先暂存,必须执行 apply 后才会写入配置并生效;
  • 修改 LAN/WAN IP 后设备地址可能变化,需要使用新地址重新访问。
粤ICP备2023071723号-1