Skip to content

WebCurl: 极简便捷的网页版API调试工具

Published:

原文链接


🚀 WebCurl - 极简网页版API调试神器

⚡ 一个文件搞定所有API测试需求 | 🎯 替代Postman的轻量级选择 | 🔒 数据本地化,安全无忧

Go Version License Platform

联系我: QQ 774309635

✨ 为什么选择 WebCurl?

还在为API调试工具而烦恼吗?Postman太臃肿?curl命令行太复杂?试试 WebCurl 吧!

🎉 一个8MB的二进制文件 = 完整的API测试解决方案

💡 源码极简:仅2个文件(index.html + main.go)实现完整功能

🌟 核心优势对比

特性WebCurlPostmancurl
安装复杂度⭐ 一个文件⭐⭐⭐ 需要安装⭐⭐ 命令行
跨域支持✅ 完美解决✅ 原生支持✅ 原生支持
文件大小10MB200MB+系统自带
离线使用✅ 完全离线❌ 需要登录✅ 完全离线
数据安全✅ 本地存储❌ 云端同步✅ 本地存储
信创兼容✅ 完美支持❌ 有限支持✅ 完美支持
IPv6支持✅ 完美支持✅ 支持✅ 原生支持
源码简洁✅ 仅2个文件❌ 复杂项目❌ 复杂项目
实时通信✅ WebSocket+SSE❌ 仅HTTP❌ 仅HTTP
调试接口✅ 内置EchoServer❌ 需额外工具❌ 需额外工具

📖 简介

本项目是一个极致轻量、跨平台、无依赖的 HTTP 请求转发与调试工具,本质上就是一个网页版的API测试与调试工具,适合接口开发、调试、测试等多种场景。

主要用途:API 测试与调试,替代某些需要登录才能使用工具(xxxxMan,xxxFox)


演示截图


演示截图


打赏我:


\

打赏二维码

项目推荐: https://github.com/o8oo8o/WebSSH 一个网页版的SSH管理工具

\

🛠️ 功能特性

🔥 核心功能

🎯 EchoServer 调试服务

🌐 静态文件服务器

🧰 常用工具


🚀 快速开始

1️⃣ 编译 & 运行(30秒搞定)

源码结构极简

WebCurl/
├── index.html    # 前端界面(纯原生HTML+JS+CSS)
└── main.go       # 后端服务(Go标准库)
# 编译
go build -o WebCurl main.go
# 也可以使用 sh build.sh 命令

# 运行(默认 0.0.0.0:4444,内嵌前端页面)
./WebCurl

# 浏览器访问
http://localhost:4444

:构建所有平台可执行文件,请使用 sh build.sh all 命令,构建完成后在build目录下查找对应平台可执行文件。

2️⃣ 命令行参数

参数说明默认值
--host监听地址0.0.0.0
--port监听端口4444
--webroot静态文件根目录(为空用内嵌 index.html)
--daemon后台运行(支持 Windows/Linux/Mac)false
--echo-server是否开启EchoServer调试服务true
--log-level日志级别(error, info, debug)error
--log-file日志文件路径post_api.log
--log-size日志文件大小限制(K/M/G)100M
--ssl-certSSL 证书文件路径ssl_cert.pem
--ssl-cert-keySSL 证书密钥路径ssl_cert.key
--upload-dirform-data上传文件保存目录(为空仅透传)
--stdout-log是否在控制台打印日志,true为同时输出到控制台和文件,false仅输出到文件true

启动示例

# 默认(0.0.0.0:4444,内嵌index.html,开启EchoServer)
./WebCurl

# 指定端口和host
./WebCurl --host 127.0.0.1 --port 8888

# 指定静态目录
./WebCurl --webroot /tmp/www

# 控制日志是否输出到控制台
./WebCurl --stdout-log=false

# 开启静态文件服务器模式(指定目录)
./WebCurl --webroot /mnt/webroot

# 关闭EchoServer调试服务
./WebCurl --echo-server=false

# 后台运行(Linux/MacOS/Windows)
./WebCurl --daemon

# 组合
./WebCurl --host 0.0.0.0 --port 9000 --webroot /tmp/www --daemon --stdout-log=false

🐳 容器化部署 · 极速上云

🚀 一键 Docker 部署

WebCurl 天生适合容器化,支持 Docker/Kubernetes 等主流云原生环境,轻松实现弹性扩展与自动化运维!

1️⃣ Docker 镜像构建与运行

# 构建镜像
docker build -t webcurl:2.2 .

# 运行容器(默认 0.0.0.0:4444)
docker run -d -p:4444:4444 --name webcurl  webcurl:2.2

# 指定数据/静态目录挂载
docker run -d --name webcurl -p 4444:4444 -v /usr/share/nginx/html/:/usr/local/WebCurl/webroot webcurl:2.2 /usr/local/WebCurl/WebCurl --webroot=/usr/local/WebCurl/webroot

2️⃣ Kubernetes 极速部署

WebCurl 完美兼容 K8S,支持无状态部署、弹性伸缩、健康检查等企业级需求。

示例 Deployment 配置:

######################################
apiVersion: apps/v1
kind: Deployment
metadata:
  name: webcurl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: webcurl
  template:
    metadata:
      labels:
        app: webcurl
    spec:
      containers:
      - name: webcurl
        image: webcurl:2.2
        ports:
        - containerPort: 4444
#        args: ["/usr/local/WebCurl/WebCurl","--echo-server=true","--port=4444"]
---
apiVersion: v1
kind: Service
metadata:
  name: webcurl
spec:
  type: NodePort
  ports:
    - port: 4444
      targetPort: 4444
      nodePort: 30444
  selector:
    app: webcurl
######################################

只需 kubectl apply -f webcurl.yaml,即可在 K8s 集群中弹性部署 WebCurl!

🌈 容器化优势


WebCurl,让 API 调试与测试像部署静态网站一样简单,轻松上云,随时随地,安全高效!


🎯 适用场景

💼 企业级应用

👨‍💻 开发者日常

🔧 运维测试

🌐 静态文件服务


📖 前端使用说明

1. 访问页面

启动后,浏览器访问 http://localhost:4444,即可进入 Postman 风格的调试页面。

2. 请求模式自动切换

3. 发送请求(代理模式)


🔧 后端接口说明

1. /api/forward(POST)

用于前端通过 form-data 方式提交请求参数,由后端转发到目标接口。

支持的 form-data 字段

字段名类型/说明示例/说明
urlstring目标接口地址
time_outint超时时间(秒),0为不超时
retry_countint重试次数,0为不重试
retry_delayint重试间隔(秒),0为无间隔
methodstring请求方法,默认 GET
body_typestring请求体类型,见下表
headersjson字符串[{"name":"X-Token","value":"abc"}]
file_infojson字符串[{"field_name":"files","file_name":"a.txt"}]
files文件支持多文件上传
bodystring请求体内容(json/xml/text等)
verify_sslY/N是否校验SSL,默认Y
follow_redirectY/N是否自动跟随重定向,默认Y

body_type 支持

2. /api/mode(GET)

返回当前后端模式,前端据此判断是否需要通过后端转发。

返回示例

{ "mode": "proxy" }

3. EchoServer 调试接口

3.1 /api/echo(所有HTTP方法)

功能:智能请求回显,支持灵活的响应控制。

特性

响应控制参数

请求头作用示例值
X-Response-Status-Code控制HTTP响应状态码201、404、500
X-Response-Location设置响应Location头https://www.qq.com
X-Response-Headers批量设置响应头(JSON字符串,键值对){“X-Foo”:“Bar”}
X-Response-Type控制响应体格式(json/xml/text)json、xml、text
X-Response-Sleep控制响应延迟(单位:毫秒)200、1000
X-Response-Body指定Base64编码的响应body内容(优先级最高)eyJtc2ciOiJoZWxsbyJ9
X-Response-Download控制响应为下载,指定下载文件名data.txt、result.json

参数传递方式

基本用法示例

# 普通请求
curl -X GET http://localhost:4444/api/echo
curl -X POST -d 'Hello World' http://localhost:4444/api/echo

# 表单与文件上传
curl -X POST -F 'text=Hello' -F 'file=@/path/to/file' http://localhost:4444/api/echo

# 控制响应状态码
curl -H "X-Response-Status-Code: 202" http://localhost:4444/api/echo

# 控制响应类型
curl -H "X-Response-Type: xml" http://localhost:4444/api/echo
curl -H "X-Response-Type: text" -d "a simple text body" http://localhost:4444/api/echo

# 控制响应延迟
curl -H "X-Response-Sleep: 500" http://localhost:4444/api/echo

# 自定义响应体(Base64编码)
curl -H "X-Response-Body: eyJtc2ciOiJoZWxsbyJ9" http://localhost:4444/api/echo

# 下载响应内容
curl -H "X-Response-Download: data.txt" http://localhost:4444/api/echo -OJ

响应结构

{
  "method": "POST",
  "url": "http://localhost:4444/api/echo",
  "headers": [
    {"key": "Content-Type", "value": "application/json"},
    ...
  ],
  "body": "Hello World"
}

3.2 /api/sse/echo(SSE流式接口)

功能:Server-Sent Events流式回显,适合前端流式消费。

特性

额外参数

用法示例

# 基本SSE请求
curl http://localhost:4444/api/sse/echo

# POST带body
curl -X POST -d 'Hello SSE' http://localhost:4444/api/sse/echo

# 控制SSE消息条数和间隔
curl -H "X-Response-Sse-Count: 5" -H "X-Response-Sleep: 1000" http://localhost:4444/api/sse/echo

# SSE上传文件
curl -X POST -F 'file=@/path/to/file' http://localhost:4444/api/sse/echo

3.3 /api/ws/echo(WebSocket接口)

功能:WebSocket流式回显,适合前端WebSocket流式消费。

特性

额外参数

用法示例

# WebSocket基本请求(需WebSocket客户端)
wscat -c ws://localhost:4444/api/ws/echo

# 控制消息条数和间隔
wscat -c "ws://localhost:4444/api/ws/echo?X-Response-Websocket-Count=5&X-Response-Sleep=1000"

# WebSocket自定义响应内容(Base64)
wscat -c "ws://localhost:4444/api/ws/echo?X-Response-Body=eyJtc2ciOiJoZWxsbyB3cyJ9"

3.4 自定义数据队列接口

POST /api/sse/set:设置SSE响应的消息队列 POST /api/ws/set:设置WebSocket响应的消息队列

功能:预设响应数据,实现自定义流式推送。

请求体格式

[
  {"value": {"v": 1, "data": "mydata"}},
  {"value": {"v": 2, "data": 123}},
  {"value": "mydata"},
  {"value": null},
  {"value": 123}
]

3.5 响应模式控制

通过请求头 X-Response-Mode 控制SSE/WS响应行为:

用法示例

# 设置SSE队列
curl -X POST -H "Content-Type: application/json" \
  -d '[{"value":{"v":1,"data":"mydata"}}, {"value":{"v":2,"data":123}}]' \
  http://localhost:4444/api/sse/set

# SSE user模式消费
curl -H "X-Response-Mode: user" http://localhost:4444/api/sse/echo

# 设置WS队列
curl -X POST -H "Content-Type: application/json" \
  -d '[{"value":{"v":1,"data":"mydata"}}, {"value":{"v":2,"data":123}}]' \
  http://localhost:4444/api/ws/set

# WS user模式消费
wscat -c "ws://localhost:4444/api/ws/echo?X-Response-Mode=user"

4. HTTP CONNECT 代理隧道支持

功能:支持 HTTP CONNECT 方法,可作为 HTTPS/SSH 等协议的代理隧道。

用法示例

# curl 通过 HTTP 代理访问 HTTPS 站点
curl -k -x http://localhost:4444 https://www.example.com

# ssh 通过 HTTP 代理
ssh -o "ProxyCommand ncat --proxy 127.0.0.1:4444 --proxy-type http %h %p" user@host

🎨 前端高级功能


🔍 常见问题

❓ 为什么需要后端转发?

由于浏览器同源策略,前端直接请求第三方接口会遇到 CORS 限制。通过本工具的后端转发,前端只需请求本地服务即可,后端再代为请求目标接口,绕过跨域限制。

❓ 如何上传多个文件?

在前端选择 form-data,每个文件都可单独选择,支持多文件上传。后端会自动处理。

❓ 如何保存上传的文件到指定目录?

启动时通过 --upload-dir=/your/path 参数指定目录,form-data上传的文件会自动保存到该目录(存在则覆盖)。目录需提前创建并有写权限。

❓ 如何自定义请求头?

在前端”请求头”标签页添加即可,支持变量替换。

❓ 如何切换为直接请求(不走代理)?

只需关闭后端服务或修改 /api/mode 返回内容,前端会自动切换为直连模式。

❓ 数据安全吗?

所有数据仅存储在浏览器本地(localStorage),不会上传到任何服务器。企业内网、敏感环境使用无忧。

❓ 支持哪些平台?

支持Windows、Linux、MacOS、ARM架构,包括国产信创平台。一次编译,到处运行。同时完美支持IPv4和IPv6网络协议。

❓ 源码有多复杂?

整个项目仅包含2个文件:index.html(前端界面)和main.go(后端服务),代码结构极其简洁,易于理解和维护。

❓ 支持哪些通信协议?

除了传统的HTTP/HTTPS请求,还原生支持WebSocket(双向通信)和SSE(Server-Sent Events,单向实时推送),满足各种实时通信需求。

❓ EchoServer有什么用?

EchoServer提供完整的请求回显和响应控制功能,适合接口调试、自动化测试、网络延迟模拟等场景。支持多种响应格式和流式通信。

❓ 如何关闭EchoServer?

启动时添加 --echo-server=false 参数即可关闭EchoServer调试服务。

❓ 如何开启静态文件服务器模式?

使用 --webroot 参数启动静态文件服务器模式。所有API接口将失效,变成一个纯静态文件服务器。

❓ 静态文件服务器支持哪些文件类型?

支持所有常见文件类型:HTML、CSS、JS、图片(PNG/JPG/GIF/SVG)、音频(MP3/WAV)、视频(MP4)、字体文件、PDF、压缩包等。会自动设置正确的MIME类型。


🤝 贡献与反馈


📄 License

MIT


如需进一步定制或有疑问,欢迎联系作者。


⭐ 如果这个项目对你有帮助,请给我们一个Star!

💬 有任何问题或建议,欢迎在GitHub上讨论!


让API调试变得简单而优雅


Previous Post
linshenkx/prompt-optimizer: 一款提示词优化器,助力于编写高质量的提示词
Next Post
使用 JavaScript 创建电子印章工具 DrawStampUtils