GraphQL 调试
在 Proxyman 中调试 GraphQL 请求:按 GraphQL Query Name 匹配规则、美化查询、显示 Query Name 列,并通过脚本模拟(Mock)响应。
1. 在 GraphQL 请求上使用调试工具
从 Proxyman 2.27.0 开始,你可以通过指定 GraphQL Query Name,在 GraphQL 请求上使用调试工具。
按 GraphQL QueryName 匹配适用于 Breakpoint、Map Local、Map Remote、Block List、Allow List 和 Scripting 工具。
使用方法
- 打开调试工具(例如 Breakpoint)
- 创建新规则
- 点击 Use Wildcard 下拉菜单 -> Advanced -> 勾选 GraphQL QueryName
- 输入 GraphQL QueryName
调试工具会先匹配原有的匹配规则,然后再匹配 GraphQL QueryName。
信息
从 build 3.0.0 开始,创建调试工具规则时,Proxyman 会自动填写 GraphQL Query Name。
2. GraphQL 查询美化
从 Proxyman 2.33.0 开始,Proxyman 可以美化(格式化)GraphQL 查询。如需开启,请打开 Tools 菜单 -> Custom Previewer Tab…,然后勾选 GraphQL 复选框。

美化后的 GraphQL 查询
3. 在主表格视图中显示 GraphQL Query Name
Proxyman 可以提取并显示每个 GraphQL 请求的 Query Name。在列标题上右键点击,然后启用 Query Name 列。

Query Name 列
4. 调试 GraphQL 请求(旧版 - Proxyman 2.26.0 及更早版本)
GraphQL 对不同的查询使用同一个 URL,因此基于 URL 的调试工具(例如 Map Local、Breakpoint、Map Remote)在这种情况下效果不佳。
不过,借助 Scripting 工具,你可以:
- 根据 QueryName 映射本地响应
- 修改 GraphQL 请求和响应的查询、Body 和 Header
使用 Scripting 工具进行 Map Local
你可以使用 Scripting 工具将本地文件映射为响应:
- 打开 Proxyman
- 在 GraphQL 域名上启用 Enable SSL Proxying
- 确保能看到来自该域名的 HTTPS 请求
- 右键点击该请求 -> Tools -> Scripting…,为其 URL 创建脚本
- 导入本地文件:点击 More 按钮 -> Import JSON or Other File... -> 选择你的文件
- 以下脚本会将本地文件设置为 QueryName="user" 的 GraphQL 请求的响应
// Import file from More Button -> Import JSON or Other files
const file = require("@users/B02D96D5.default_message_32E64A5B.json");
function onRequest(context, url, request) {
// 1. Extract the queryName from the request
var queryName = request.body.query.match(/\S+/gi)[1].split('(').shift();
// Or extract the operationName
var operationName = request.body.operationName
// 2. Save to sharedState
sharedState.queryName = queryName
sharedState.operationName = operationName
// Done
return request;
}
function onResponse(context, url, request, response) {
// 3. Check if it's the request we need to map
if (sharedState.queryName == "user") {
// 4. Import the local file by Action Button -> Import
// Get the local JSON file and set it as a body (like Map Local)
response.headers["Content-Type"] = "application/json";
response.body = file;
}
// Done
return response;
}
修改 Header、Query、Body
- 使用相同的代码,并修改 queryName
- 使用代码片段修改对应的值