Hoppscotch:开源免费的Postman替代品,轻量级API测试神器
背景
作为开发者,API 测试是日常工作的重要环节。提到 API 测试工具,大多数人首先想到的是 Postman。
但 Postman 存在一些问题:
- 高级功能收费:团队协作、云同步等功能需要付费订阅
- 资源占用大:Electron 应用,内存占用较高
- 数据隐私:API 数据存储在第三方服务器
- 臃肿:功能越来越多,启动越来越慢
如果有一款工具,既免费开源、又轻量快速、还能自托管保护数据隐私,会不会更香?
Hoppscotch 就是这样的工具——在 GitHub 上已获得 70K+ Star,被誉为"Postman 的开源替代品"。
什么是 Hoppscotch?
Hoppscotch 是一个开源的 API 开发生态系统,提供从 API 测试到文档生成的完整解决方案。
核心特性:
| 特性 | 说明 |
|---|---|
| 完全开源 | MIT 许可证,完全免费 |
| 轻量级 | 基于 Web,可安装为 PWA 离线使用 |
| 多协议支持 | HTTP、WebSocket、GraphQL、Socket.IO、MQTT、SSE |
| 自托管 | 可部署在自己的服务器,数据完全可控 |
| 团队协作 | 支持团队空间、共享集合、权限管理 |
| 多平台 | Web、Windows、macOS、Linux 桌面应用 |
GitHub 地址: github.com/hoppscotch/…
在线体验: hoppscotch.io
Hoppscotch vs Postman:核心对比
| 对比项 | Hoppscotch | Postman |
|---|---|---|
| 开源 | ✅ MIT 许可 | ❌ 闭源 |
| 价格 | 完全免费 | 免费版功能受限,团队版 $12/用户/月 |
| 部署方式 | Web / 自托管 / 桌面应用 | 桌面应用 / 云服务 |
| 数据隐私 | 可自托管,数据在本地 | 数据存储在 Postman 服务器 |
| 资源占用 | 轻量(PWA 仅几MB) | 较重(Electron 应用) |
| 多协议 | HTTP、WS、GraphQL、MQTT、SSE | HTTP、WS、GraphQL |
| 团队协作 | ✅ 免费 | ❌ 付费功能 |
| 环境变量 | ✅ 无限 | 免费版有限制 |
| 代码生成 | 10+ 语言 | 20+ 语言 |
一句话总结: 如果你追求免费、开源、轻量、数据可控,Hoppscotch 是更好的选择。
快速上手
方式一:在线使用
直接访问 hoppscotch.io,无需注册即可开始使用。
方式二:安装桌面应用
# macOS (Homebrew)
brew install --cask hoppscotch
# Windows (Winget)
winget install hoppscotch
# Linux (Snap)
snap install hoppscotch
# Linux (AUR)
yay -S hoppscotch-bin
方式三:安装为 PWA
在 Chrome/Edge 中访问 hoppscotch.io,点击地址栏右侧的"安装"按钮,即可将其安装为桌面应用,支持离线使用。
发送第一个请求
- 选择请求方法(GET/POST/PUT/DELETE 等)
- 输入 API 地址
- 点击 "Send" 发送请求
- 查看响应结果
就这么简单!
核心功能详解
1. 多协议支持
Hoppscotch 不仅仅是一个 HTTP 客户端,还支持多种协议:
| 协议 | 用途 |
|---|---|
| HTTP/HTTPS | REST API 测试 |
| WebSocket | 实时双向通信测试 |
| GraphQL | GraphQL 查询测试 |
| Socket.IO | Socket.IO 实时通信 |
| MQTT | IoT 消息订阅/发布 |
| SSE | 服务器推送事件 |
WebSocket 测试示例:
ws://echo.websocket.org
// 发送消息
{"type": "ping", "data": "hello"}
// 接收响应
{"type": "pong", "data": "hello"}
GraphQL 测试示例:
query GetUser($id: ID!) {
user(id: $id) {
name
email
posts {
title
}
}
}
// Variables
{
"id": "123"
}
2. 环境变量管理
环境变量是 API 测试的必备功能,Hoppscotch 支持无限环境变量。
创建环境:
- 点击左侧 "Environments"
- 创建新环境(如:开发、测试、生产)
- 添加变量键值对
使用变量:
# 定义变量
BASE_URL = https://api.example.com
API_KEY = your-api-key
# 在请求中使用
URL: {{BASE_URL}}/users
Header: Authorization: Bearer {{API_KEY}}
动态变量:
{{$timestamp}} # 当前时间戳
{{$randomInt}} # 随机整数
{{$guid}} # UUID
{{$randomEmail}} # 随机邮箱
3. 集合管理
将 API 请求组织成集合,便于管理和复用。
创建集合:
- 点击 "Collections" → "New Collection"
- 创建文件夹分组
- 保存请求到集合
导入导出:
# 导出为 JSON 文件
Collections → Export → Download
# 从 Postman 导入
Collections → Import → 选择 Postman 导出的 JSON
# 从 cURL 导入
粘贴 cURL 命令,自动解析为请求
4. 前置脚本(Pre-request Scripts)
在请求发送前执行 JavaScript 代码:
// 设置时间戳
hoppscotch.setEnvVar("timestamp", Date.now());
// 生成签名
const secret = hoppscotch.getEnvVar("SECRET");
const payload = JSON.stringify(hoppscotch.request.body);
const signature = CryptoJS.HmacSHA256(payload, secret).toString();
hoppscotch.setEnvVar("signature", signature);
// 添加请求头
hoppscotch.request.headers["X-Signature"] = signature;
5. 后置测试(Post-request Tests)
请求完成后执行测试断言:
// 测试状态码
hoppscotch.test("Status code is 200", () => {
hoppscotch.expect(hoppscotch.response.status).toBe(200);
});
// 测试响应时间
hoppscotch.test("Response time < 500ms", () => {
hoppscotch.expect(hoppscotch.response.time).toBeLessThan(500);
});
// 测试响应数据
hoppscotch.test("Response has data field", () => {
const data = JSON.parse(hoppscotch.response.body);
hoppscotch.expect(data).toHaveProperty("data");
});
// 提取 token 并保存
const response = JSON.parse(hoppscotch.response.body);
if (response.token) {
hoppscotch.setEnvVar("AUTH_TOKEN", response.token);
}
6. 代码生成
一键生成多种语言的请求代码:
支持的语言:
| 语言/框架 | 语言/框架 |
|---|---|
| JavaScript (Fetch) | Python (Requests) |
| JavaScript (Axios) | Python (http.client) |
| Node.js (HTTP) | Go |
| cURL | Java (OkHttp) |
| PHP (cURL) | Ruby |
| C# (HttpClient) | Rust (reqwest) |
生成的代码示例:
// JavaScript - Fetch
fetch('https://api.example.com/users', {
method: 'GET',
headers: {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => console.log(data));
# Python - Requests
import requests
headers = {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
}
response = requests.get('https://api.example.com/users', headers=headers)
print(response.json())
7. 团队协作
Hoppscotch 支持团队协作功能(自托管版本):
- 创建团队空间
- 共享集合和环境变量
- 角色权限管理
- 实时同步
8. 代理模式
解决 CORS 问题:
- 设置 → Proxy → 启用代理模式
- 输入代理服务器地址
- 请求通过代理发送,绕过浏览器 CORS 限制
自托管部署
Hoppscotch 支持完全自托管,数据存储在自己的服务器上。
Docker Compose 部署
version: '3.8'
services:
hoppscotch:
image: hoppscotch/hoppscotch:latest
container_name: hoppscotch
restart: unless-stopped
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgresql://postgres:password@db:5432/hoppscotch
- JWT_SECRET=your-jwt-secret
- SESSION_SECRET=your-session-secret
depends_on:
- db
- redis
db:
image: postgres:15-alpine
container_name: hoppscotch-db
restart: unless-stopped
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=password
- POSTGRES_DB=hoppscotch
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
container_name: hoppscotch-redis
restart: unless-stopped
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:
# 启动服务
docker-compose up -d
# 访问
http://localhost:3000
环境变量配置
| 变量 | 说明 |
|---|---|
DATABASE_URL | PostgreSQL 连接地址 |
REDIS_URL | Redis 连接地址 |
JWT_SECRET | JWT 密钥 |
SESSION_SECRET | Session 密钥 |
MAILER_SMTP_URL | 邮件服务地址(可选) |
GOOGLE_CLIENT_ID | Google OAuth(可选) |
GITHUB_CLIENT_ID | GitHub OAuth(可选) |
实战场景
场景1:REST API 完整测试流程
1. 创建环境变量
- BASE_URL: https://api.example.com
- TOKEN: (登录后自动设置)
2. 登录接口
POST {{BASE_URL}}/auth/login
Body: {"email": "user@example.com", "password": "xxx"}
后置脚本: 提取 token 保存到环境变量
3. 业务接口测试
GET {{BASE_URL}}/users
Header: Authorization: Bearer {{TOKEN}}
测试断言: 状态码 200,返回数据格式正确
4. 保存到集合
组织成 "用户管理" 集合
场景2:WebSocket 实时通信测试
1. 连接 WebSocket
ws://localhost:8080/ws
2. 发送消息
{"action": "subscribe", "channel": "notifications"}
3. 接收消息
实时显示服务端推送的消息
4. 测试场景
- 连接/断开测试
- 心跳保活
- 消息格式验证
场景3:GraphQL API 测试
1. 设置 GraphQL 端点
https://api.example.com/graphql
2. 查询 Schema
自动获取并展示 API 文档
3. 编写查询
query {
users(limit: 10) {
id
name
email
}
}
4. 设置变量
{
"limit": 10
}
5. 执行并查看结果
浏览器扩展
Hoppscotch 提供浏览器扩展,解决 CORS 问题:
安装扩展后,可以在浏览器中直接发送请求,无需担心跨域问题。
常见问题
Q:Hoppscotch 能完全替代 Postman 吗?
A:对于大多数 API 测试场景,完全可以。Hoppscotch 支持所有主流协议和功能,且完全免费。如果需要 Postman 特有的功能(如 Mock 服务器、监控),可能需要考虑其他方案。
Q:数据存储在哪里?
A:
- 在线版:数据存储在浏览器 LocalStorage,可登录账号同步到云端
- 自托管版:数据存储在你自己的数据库中
Q:支持从 Postman 迁移吗?
A:支持。可以直接导入 Postman 导出的 JSON 文件,集合和环境变量都会保留。
Q:如何保证 API 数据安全?
A:推荐自托管部署。所有数据存储在自己的服务器上,不经过第三方。
Q:支持 OpenAPI/Swagger 导入吗?
A:支持。可以导入 OpenAPI 规范文件,自动生成 API 集合。
适用场景
推荐使用:
- 个人开发者 API 测试
- 团队协作 API 开发
- 需要自托管保护数据隐私
- 多协议测试(WebSocket、GraphQL、MQTT)
- 追求轻量级工具
不推荐使用:
- 需要 Mock 服务器的场景(Postman 有此功能)
- 需要 API 监控告警功能
- 需要与 CI/CD 深度集成(可考虑 Newman)
总结
Hoppscotch 用"开源 + 轻量 + 自托管"的组合,为 API 测试提供了一个免费且强大的解决方案。
核心优势回顾:
- 完全免费:MIT 开源,无功能限制
- 轻量快速:Web 应用,可离线使用
- 多协议支持:HTTP、WebSocket、GraphQL、MQTT、SSE
- 自托管可控:数据存储在自己的服务器
- 团队协作:免费的团队空间和共享功能
- 代码生成:一键生成多种语言代码
对于追求免费、开源、数据可控的开发者,Hoppscotch 是 Postman 的最佳替代选择。
本文由无边界科技技术团队分享,专注软件开发与技术解决方案。
官网:wubianj.com
© 版权归无边界科技所有,转载请注明出处。