news 2026/10/2 13:45:56

Hoppscotch 自托管部署:10 分钟跑起你自己的完整 API 调试工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hoppscotch 自托管部署:10 分钟跑起你自己的完整 API 调试工具

Hoppscotch 自托管部署:10 分钟跑起你自己的完整 API 调试工具

【免费下载链接】hoppscotchOpen-Source API Development Ecosystem • https://hoppscotch.io • Offline, On-Prem & Cloud • Web, Desktop & CLI • Open-Source Alternative to Postman, Insomnia项目地址: https://gitcode.com/GitHub_Trending/ho/hoppscotch

Hoppscotch 是一个开源的 API 调试工具,支持 REST、GraphQL、WebSocket、MQTT 等协议,也有 CLI 形态。读完这篇,你能用一条命令在服务器上起一个自托管实例,并看懂一个请求在代码里是怎么走完整个流程的。

上图是主界面:左侧集合树,中间 URL 与请求参数,右侧响应状态和耗时。

桌面端内置"切换实例",同一客户端既能连官方云,也能连你自己的自托管后端。

它解决的是什么问题

同类工具里 Postman 偏 SaaS,请求和数据默认走对方服务器;Insomnia 是闭源桌面应用。Hoppscotch 的三点差异:

  • 轻:浏览器打开即用,可装成 PWA 离线使用
  • 全协议:REST、GraphQL、WebSocket、SSE、Socket.IO、MQTT 共用一套界面
  • 可自托管:后端、PostgreSQL、管理面板都能跑在你的机器上,集合和环境数据不出内网

谁适合用它

  • 后端联调:多环境(测试/预发/生产)来回切,环境变量替换省掉改 URL
  • 数据合规团队:接口定义属于敏感资产,需要私有化部署
  • 前端/全栈开发:同一个界面测 REST 和 WebSocket,不用换工具
  • 想把接口集合接进 CI 的团队:命令行工具可以批量跑集合

最短路径跑起来 🐳

主路径只有一条,用 Docker:

  1. git clone https://gitcode.com/GitHub_Trending/ho/hoppscotch && cd hoppscotch拿到仓库。成功标志:目录里有docker-compose.yml和.env.example。

  2. cp .env.example .env生成配置文件。注意 docker-compose.yml 里每个服务都声明了env_file: ./.env,没有这个文件服务起不来。成功标志:.env文件存在。

  3. docker compose --profile default up默认档一次拉起 All-in-One 容器 + PostgreSQL + 自动迁移。成功标志:访问http://localhost:3000打开应用本体,http://localhost:3100是管理面板。

想改代码就跑本地开发环境:pnpm install && pnpm dev,package.json 已锁定 pnpm 版本,pnpm dev会并行启动各子包的开发服务器。

验证动作:登录后切到 REST 标签,输入GET https://echo.hoppscotch.io点 Send,状态码 200 即部署成功。

功能走查:发一个真实请求

  1. 输入 URL 点 Send。你看到右侧状态码、耗时、Response Body 三个区域亮起来。
  2. 把请求存进集合:点 Save,填名称选集合。你看到左侧集合树多出一条可折叠的记录。
  3. 建一个 Environment,把 URL 里的域名写成{{baseUrl}}。你看到 URL 中的变量显示为高亮样式。
  4. 切换到另一个 Environment。你看到同一请求自动指向新地址,不用手动改 URL。

另外右上角 Import 菜单支持导入 cURL 和 Postman 集合(入口在 ImportCurl.vue),存量 Postman 集合可以整体迁过来。

源码导读:一个请求的生命周期

  • 入口:Request.vue 是 REST 标签页组件,URL、参数、Header 都在这一层编辑。
  • 发送:点 Send 后走 RequestRunner.ts,它先做环境变量的变量替换,再执行 Pre-request 脚本和 Test 断言,脚本运行在 hoppscotch-js-sandbox 的隔离沙箱里。
  • 网络层:hopp-fetch.ts 把请求转成 RelayRequest,交给拦截器决定走浏览器、代理、扩展还是桌面原生通道,绕开 CORS 限制。
  • 渲染:Response.vue 负责状态码、耗时和 Body 展示。
  • 落库:集合和环境存在 collections.ts 与 environments.ts,登录后经 helpers/backend/ 的 GraphQL 文件同步到后端,由 NestJS + Prisma 写入 PostgreSQL。

推荐阅读顺序:Request.vue 看界面 → RequestRunner.ts 看流程 → hopp-fetch.ts 看网络 → 最后翻 backend 里的 GraphQL 文件看数据怎么回写。

部署与配置

核心配置文件只有一个:根目录 .env.example 复制成的.env。其余保持默认即可,只改下面这几个:

变量作用默认值风险
DATA_ENCRYPTION_KEY32 位落库加密密钥示例值是明文占位,不改等于敏感数据未加密
DATABASE_URLPostgreSQL 连接串默认指向 compose 内置库,接外部库要同步改 compose 里的同名变量
VITE_BACKEND_GQL_URL前端连后端的 GraphQL 地址换了端口没改这里,页面会一直转圈连不上后端

桌面端连接自托管实例后的实际界面,与 Web 版共用同一套代码。

容易踩的坑

  1. 容器起不来 → 忘了cp .env.example .env,env_file指向的文件缺失 → 先建文件再跑 compose。
  2. 登录后数据同步一直失败 →VITE_BACKEND_GQL_URL还指向http://localhost:3170/graphql,但部署环境域名不同 → 按实际后端地址改.env后重建容器。
  3. 升级后页面报错、接口类型对不上 → 后端 schema 变了但前端 GraphQL 类型没重新生成 → 重跑依赖里的 codegen(配置在 gql-codegen.yml),细节以仓库最新版本为准。
  4. 改了端口却访问不通 → 端口映射写在 docker-compose.yml,.env里的VITE_*是前端视角的地址,两边都要改。

接下来可以做什么

  • 个人:用 CLI 把常用请求集合批量跑起来当冒烟测试,入口在 hoppscotch-cli 的src/utils/test.ts。
  • 团队:把DATA_ENCRYPTION_KEY换成本地随机值,再把.env纳入你们的配置管理流程。
  • 想贡献代码:pnpm dev起本地环境后从 hoppscotch-common 读起,提交前跑pnpm -r do-lint。

工具的价值在于它始终在你手里:代码可查,数据可留,协议可扩。

【免费下载链接】hoppscotchOpen-Source API Development Ecosystem • https://hoppscotch.io • Offline, On-Prem & Cloud • Web, Desktop & CLI • Open-Source Alternative to Postman, Insomnia项目地址: https://gitcode.com/GitHub_Trending/ho/hoppscotch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 13:45:13

Axure 9.0 动态面板基本操作

(1) 进入状态编辑界面双击画布中的动态面板,即可进入编辑模式。此时页面背景会变成灰色遮罩,代表当前仅编辑面板内部内容,外部元件不可操作。顶部悬浮工具栏可管理所有状态。(2) 新增新增状态&a…

作者头像 李华
网站建设 2026/10/2 13:45:05

新一代AI程序开发利器Windsurf应用指南:把BYOK Base URL改到TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 13:42:55

移动AI编程平台WebCode:架构设计与工程实践全解

几年前第一次跟同事说“我打算在手机上写代码”,对方回了我一句“你是嫌自己头发太多吗”。当时我也不太信,毕竟没物理键盘、屏幕就那么点大、后台随时可能被杀,怎么看都像自虐。但这个想法一直没散。后来移动设备的性能上来了,云…

作者头像 李华
网站建设 2026/10/2 13:42:04

融合需求侧虚拟储能的楼宇微网优化调度Matlab实现

1. 项目整体思路拆解:虚拟储能凭什么能“凭空”削峰填谷做楼宇微网优化调度的人,可能都遇到过同一个问题:微网里接了一堆分布式光伏,屋顶装了电池储能,但调度来调度去,总感觉经济性提升不明显。光伏大发的时…

作者头像 李华
网站建设 2026/10/2 13:40:51

yuzu Switch 模拟器快速上手指南:5 步从下载到开跑

yuzu Switch 模拟器快速上手指南:5 步从下载到开跑 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 你想玩的游戏只在 Switch 上跑,而主机不在身边,再买一台又不划算。yuzu 是一款…

作者头像 李华
网站建设 2026/10/2 13:37:50

AI的下一步是什么:用TaoToken统一Key打通人工智能代理工作流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华