Skip to content

API 测试工具

概述

API 测试工具是一个面向开发者的 HTTP 接口调试利器,尤其针对 REST、GraphQL、Webhook 与 LLM API 进行了预设优化。它采用 预设驱动 的设计——选择预设即可自动填充 URL、请求头和请求体模板,再通过变量系统微调参数,无需重复手动拼装。

核心功能

  • 预设驱动,开箱即用:内置 REST、GraphQL、Webhook、OpenAI、Gemini、Claude、DeepSeek、DashScope、Moonshot、OpenRouter、本地模型等预设,预设涵盖完整的 URL 模板、变量定义与请求体结构
  • 智能变量模板系统:URL、请求头、请求体均支持 {{variable}} 占位符,修改变量值即可一键应用到全请求,告别手工替换
  • 流式响应原生支持:自动检测 text/event-stream 内容类型,实时逐块渲染流式输出;支持通过 AbortController 随时中止请求
  • 请求配置管理:可将当前请求配置保存为「请求档案」,存入浏览器 localStorage,随时加载复用
  • 多 API 授权适配:根据预设类型自动构建或预填鉴权头(如 Authorization: Bearer ...、Anthropic x-api-key),无需手动填写认证格式

快速上手

首次使用 5 步走

第一步:进入工具

在左侧工具列表中找到 API 测试工具,点击进入。你将看到一个左右分栏的界面,顶部是预设选择和 URL 构建区。

TODO: 截图 - 工具整体界面,标注预设选择器、URL 构建器、左侧请求配置区和右侧响应查看区

第二步:选择一个预设

点击顶部的 预设选择器 下拉框,选择一个预设开始:

预设类别适用场景
空白 / REST / GraphQL / Webhook构建通用 HTTP 请求、JSON 提交、GraphQL 查询和回调测试
OpenAI / Responses / Embeddings测试 OpenAI 聊天、Responses 和向量化接口
DeepSeek / DashScope / Moonshot / 智谱 / OpenRouter / Groq / xAI测试 OpenAI 兼容服务商接口
Ollama / LM Studio测试本地 OpenAI 兼容模型服务
Google Gemini / Anthropic / Cohere测试非 OpenAI 协议或独立服务商 API

选择后,URL、请求头和请求体会自动填充。

TODO: 截图 - 预设选择器展开状态,显示多类预设选项

第三步:填写关键变量

左侧的 URL 变量 区域列出了该预设所需的所有变量(如 baseUrlapiKeymodel 等)。部分变量带有下拉选项(如 protocol 可选 http/https),部分需要手动输入。

至少要填写以下内容:

  1. API Key —— 你的 API 密钥(部分预设必填;保存档案时会随变量一起存入本地 localStorage
  2. Base URL —— 如果是第三方兼容接口,改为对应的地址(如 api.deepseek.com
  3. 模型 —— 选择或输入你要测试的模型名称
  4. 用户消息 —— 输入一段测试消息

TODO: 截图 - 变量编辑区域高亮,标注必填变量

第四步:调整请求细节

在左侧的 请求配置 面板中,你可以:

  • 查看和编辑自动生成的 请求头(如 Content-Type)
  • 请求体 编辑器中修改 JSON 请求体模板

TODO: 截图 - 请求配置面板,标注请求头表格和请求体编辑器

第五步:发送并查看响应

点击顶部的 发送 按钮,请求发出后右侧的 响应面板 会显示:

  • 状态码状态文本(如 200 OK
  • 响应头 列表
  • 响应体 内容(JSON 自动格式化,流式内容实时追加)
  • 耗时(从发起到收到完整响应的时间)

TODO: 截图 - 收到正常响应后的界面,标注状态码、响应头和格式化后的响应体

功能详解

URL 构建器

顶部横跨全宽的 URL 构建器包含三个核心元素:

元素说明
方法选择器下拉框切换 HTTP 方法(GET / POST / PUT / DELETE / PATCH)
URL 输入框显示完整的请求 URL,变量已被替换为实际值(只读显示)
发送按钮发起请求;请求进行中时变为 停止 按钮,点击可中止当前请求

URL 输入框显示的是变量替换后的最终 URL,让你在发送前确认地址无误。

TODO: 截图 - URL 构建器,标注方法选择器、URL 显示区域和发送/停止按钮

变量系统

变量是 API 测试工具最核心的灵活机制。

变量编辑器(URL 变量区域)

左侧的 URL 变量区域列出当前预设定义的所有变量。每个变量包含:

  • 标签(如 "Base URL"、"模型")
  • 输入控件(根据 type 自动适配:文本输入框、下拉选择器、切换开关)
  • 必填标记(必填变量旁有红色 * 标记)
  • 说明文字(鼠标悬停或输入框下方显示提示)

TODO: 截图 - 变量编辑器,标注不同类型的变量控件(文本框、下拉框、开关)

变量类型

类型说明交互方式
string文本字符串文本输入框
enum枚举选项列表下拉选择器
boolean布尔值开关切换器

变量的作用范围

变量的作用是 全局模板替换——URL、请求头、请求体中的所有 {{variableName}} 占位符都会在发送时被替换为当前变量值。例如,修改 model 变量为 deepseek-chat,URL 和请求体中的 {{model}} 会全部自动替换。

💡 小提示:你可以通过「配置」按钮打开配置管理对话框,添加自定义变量,扩展预设的能力。

请求配置面板

位于左下方的请求配置面板包含两个选项卡:

请求头

一个键值对表格,列出当前请求的所有 HTTP 头。预设已经自动填充了必要的头(如 Content-Type: application/json,Anthropic 还会自动添加 anthropic-version)。你可以:

  • 编辑值:直接点击值单元格修改
  • 新增键值对:点击底部的「+ 添加请求头」按钮
  • 删除:点击行末的删除按钮

TODO: 截图 - 请求头编辑表格

请求体

一个代码编辑器(Monaco Editor),显示请求体 JSON 模板。你可以直接在其中编辑,变量 {{variable}} 会在发送时被替换。

TODO: 截图 - 请求体编辑器

响应面板

右侧的响应面板是查看 API 返回结果的地方。

普通响应

响应自上而下包含:

区域内容
状态栏HTTP 状态码(如 200)、状态文本(如 OK)、请求耗时(如 1.23s
响应头可折叠的响应头列表
响应体自动语法高亮和格式化(JSON 自动美化,其他文本原样显示)

TODO: 截图 - 普通响应面板,标注状态码、响应头和格式化的 JSON 响应体

流式响应

当检测到响应 Content-Type 为 text/event-streamapplication/stream 时,工具自动进入流式模式:

  • 实时渲染:收到的每个数据块(chunk)会立即追加到响应体中
  • 持续更新:响应面板中的内容会不断刷新,你可以实时看到 LLM 逐字生成的过程
  • 手动中止:点击 URL 构建器的 停止 按钮可随时中断流式响应

TODO: 截图 - 流式响应进行中的状态,响应体内容在持续增长

请求档案管理

点击顶部的 配置 按钮,打开请求档案管理对话框。

保存当前配置

  1. 配置好预设、变量、请求头和请求体
  2. 点击 配置 → 保存当前配置
  3. 输入配置名称(如 "DeepSeek Chat 测试"),点击确认
  4. 该配置会保存到浏览器本地存储中

加载已保存配置

在配置管理对话框中,你可以:

  • 加载:选择一个已保存的配置,一键恢复所有设置
  • 重命名:修改配置名称
  • 删除:删除不再需要的配置

TODO: 截图 - 配置管理对话框,显示已保存的配置列表和操作按钮

高级用法

测试第三方兼容接口

许多模型厂商(如 DeepSeek、DashScope、Moonshot、智谱、OpenRouter、Groq、xAI 等)提供与 OpenAI 兼容的 API。可以直接选择对应预设;如果服务商未内置,也可以使用 OpenAI Chat Completion 预设并修改两个变量:

  1. baseUrl 改为第三方地址(如 api.deepseek.com
  2. model 变量的下拉框中手动输入或选择对应的模型名(如 deepseek-chat

TODO: 截图 - 将 baseUrl 改为 api.deepseek.com,model 选择 deepseek-chat

Gemini 流式与非流式切换

Google Gemini API 的非流式和流式使用不同的端点(endpoint):

模式endpoint 值
非流式generateContent
流式streamGenerateContent

使用 Gemini 预设时,变量列表中的 endpoint 变量可以选择 generateContentstreamGenerateContentstream 布尔变量仅作为模板参考。确保两者的设置一致。

💡 提示:流式响应即使到达 Gemini 的 streamGenerateContent 端点,工具的流式检测机制也能正常识别并实时渲染。

使用空白预设构建自定义请求

如果内置预设不能满足需求,可以选择 空白请求 预设从头开始:

  1. 选择「空白请求」预设(默认方法为 GET)
  2. 在 URL 输入框中直接输入完整 URL
  3. 在请求配置面板中添加自定义请求头
  4. 根据需要填写请求体(GET 请求可留空)
  5. 点击发送

TODO: 截图 - 空白预设下,手动填写 URL 和请求头的示例

请求档案的多场景切换

你在调试一个多模型的对比测试时可以这样用:

  1. 用 OpenAI 预设配置好 GPT-4 的测试参数,保存为档案「GPT-4 测试」
  2. baseUrl 改为 api.deepseek.commodel 改为 deepseek-chat,保存为「DeepSeek 测试」
  3. 在配置管理对话框中点击这两个档案即可快速切换测试不同的模型

常见问题

Q:我的 API Key 会被保存到哪里?安全吗?

API Key 会作为变量值保存在请求档案中,与档案一起存储在浏览器的 localStorage 中。localStorage 是浏览器本地存储,不会上传到任何服务器。但请注意,如果你清除了浏览器数据(包括本地存储),已保存的档案和其中包含的 API Key 也会一起丢失。建议勿将生产环境的高权限 Key 长期保存在配置中。

Q:为什么发送请求后一直卡住?

可能的原因:

  • API 地址不可达——检查 baseUrl 是否拼写正确、协议(http:// vs https://)是否正确
  • 网络代理问题——如果你处于需要代理的网络环境,确保应用已正确配置代理
  • API Key 无效或过期——大部分 4xx 错误会在响应中体现,但一些服务可能在认证失败时直接挂起连接
  • 防火墙或跨域限制——桌面应用不受浏览器 CORS 限制,但可能受系统防火墙影响

Q:流式响应不工作,响应体直接显示完整的 JSON 怎么办?

检查以下两点:

  1. 请求体中 stream 参数是否设置为 true(如果是 OpenAI/Claude 预设,打开变量中的 stream 开关)
  2. 响应的 Content-Type 是否包含 text/event-stream——某些网关或代理可能会改变 Content-Type,导致工具无法自动识别流式模式

如果仍不行,可以手动验证:在终端中使用 curl 等工具发送相同请求,确认服务端是否确实返回了流式响应。

Q:新增的变量不生效,URL 中的 {{myVar}} 没有被替换?

检查变量名是否完全匹配(大小写敏感),以及变量是否添加到了当前预设的变量列表中。变量替换在发送请求时即时计算,如果 URL 模板中使用了 {{myVar}},但变量列表中不存在 myVar,占位符会被原样保留在 URL 中。

你可以通过「配置 → 变量管理」添加自定义变量来解决此问题。

Q:为什么我保存的配置不见了?

已保存的请求档案存储在浏览器的 localStorage 中。以下情况会导致数据丢失:

  • 浏览器数据被清除(包括手动清除或自动清理工具)
  • 应用通过 Tauri 升级后如果 localStorage 存储路径发生变化(概率较小)
  • 同时打开多个标签页或应用实例时,后保存的配置可能覆盖先保存的同名配置

建议定期将重要的配置手动截图或记录关键参数作为备份。

Released under the Apache-2.0 License.