Hoppscotch:开源免费的Postman替代品,轻量级API测试神器

9 阅读6分钟

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:核心对比

对比项HoppscotchPostman
开源✅ MIT 许可❌ 闭源
价格完全免费免费版功能受限,团队版 $12/用户/月
部署方式Web / 自托管 / 桌面应用桌面应用 / 云服务
数据隐私可自托管,数据在本地数据存储在 Postman 服务器
资源占用轻量(PWA 仅几MB)较重(Electron 应用)
多协议HTTP、WS、GraphQL、MQTT、SSEHTTP、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,点击地址栏右侧的"安装"按钮,即可将其安装为桌面应用,支持离线使用。

发送第一个请求

  1. 选择请求方法(GET/POST/PUT/DELETE 等)
  2. 输入 API 地址
  3. 点击 "Send" 发送请求
  4. 查看响应结果

就这么简单!

核心功能详解

1. 多协议支持

Hoppscotch 不仅仅是一个 HTTP 客户端,还支持多种协议:

协议用途
HTTP/HTTPSREST API 测试
WebSocket实时双向通信测试
GraphQLGraphQL 查询测试
Socket.IOSocket.IO 实时通信
MQTTIoT 消息订阅/发布
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 支持无限环境变量。

创建环境:

  1. 点击左侧 "Environments"
  2. 创建新环境(如:开发、测试、生产)
  3. 添加变量键值对

使用变量:

# 定义变量
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 请求组织成集合,便于管理和复用。

创建集合:

  1. 点击 "Collections" → "New Collection"
  2. 创建文件夹分组
  3. 保存请求到集合

导入导出:

# 导出为 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
cURLJava (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 问题:

  1. 设置 → Proxy → 启用代理模式
  2. 输入代理服务器地址
  3. 请求通过代理发送,绕过浏览器 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_URLPostgreSQL 连接地址
REDIS_URLRedis 连接地址
JWT_SECRETJWT 密钥
SESSION_SECRETSession 密钥
MAILER_SMTP_URL邮件服务地址(可选)
GOOGLE_CLIENT_IDGoogle OAuth(可选)
GITHUB_CLIENT_IDGitHub 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

© 版权归无边界科技所有,转载请注明出处。