跳转到内容
首页
Docs/API Tester

API Tester

PocketCode 内的全屏 API 客户端:支持带脚本和无代码断言的 REST 请求、GraphQL、WebSocket、Server-Sent Events、Socket.IO 和 MQTT。集合、带密钥变量的环境、可以比较的历史记录、集合执行器、负载测试、Mock Server 和代码生成让它更完整。下面每个屏幕都会说明它能做什么;缺少某项功能时,还会说明缺了什么、为什么缺。

它是什么,如何打开

API Tester 以全屏图层的形式盖在应用之上,旋转设备时会保留已打开的请求、你所在的屏幕和实时连接。它支持六种协议:REST、WebSocket、GraphQL、SSE、Socket.IO 和 MQTT。代码里有一个 gRPC 面板,但此版本把它隐藏了,等它能在 Android 上运行后再放出来。

打开方式

  1. 1点击导航栏中的工具。开发工具面板会打开:点击 API Test(无论应用使用哪种语言,这个磁贴都显示“API Test”)。
  2. 2或者打开命令面板,运行 API Tester。
  3. 3或者在主页使用 API 测试器快捷操作,也可以点击 API 测试器小组件,它会显示你保存的集合和最近运行的请求。
  • 系统返回手势会从请求回到起始页;在起始页上则会关闭 API Tester。
  • API Tester 没有自己的深度链接。键盘快捷键只存在于横屏平板布局中(见打开的请求、保存与快捷键)。

还有谁会用到它

  • AI 助手为这个模块提供三个工具:发送请求、列出你的集合、解析 cURL 命令。它们无需打开屏幕就能响应,使用同一套 REST 引擎。它收到的响应正文会在 4096 个字符处截断,它不能附加文件,也不会调用 PocketCode 自己的后端,而且解析 cURL 命令只是读取:不会有任何内容载入编辑器。
  • 工作流可以由在此屏幕上发送的响应触发。事件携带 URL、方法、状态码和耗时,从不包含正文或 header。AI 发送的请求不会触发它。
  • Cloud Sync(Pro)目前不同步你的集合和环境,这部分已暂停。详见隐私与安全。

屏幕一览

每个屏幕和面板一行。在手机上,起始页、集合和历史记录要从请求的 ⋮ 菜单进入;在平板上,顶栏有首页、请求名称、环境菜单和打开资料库(它会打开集合)。

屏幕如何到达你可以做什么
起始页最先打开;从请求返回;平板上点击首页选择新建请求、集合或历史记录,并回到仍保持连接的任何内容。
请求新建请求、起始页上的标签,或从集合、历史记录载入一条记录构建并发送请求。有四种布局,取决于窗口。
协议面板请求上下文行中的协议菜单WebSocket、GraphQL、SSE、Socket.IO 和 MQTT 各有自己的面板,四种布局中都一样。
工具上下文行上的滑块图标(仅在请求屏幕上)打开环境、Mock Server、Cookies、导入和设置。
环境工具 → 环境,或环境菜单 → 管理环境选择当前环境;编辑变量、密钥和全局变量。
Mock Server工具 → Mock Server开启本地服务器(Pro),设置端口和延迟,添加路由,查看日志。
Cookie 存储工具 → Cookies查看服务器存储的 cookie;把它们从列表中移除。
导入请求工具 → 导入粘贴 cURL、Postman、Insomnia、OpenAPI 或 HAR 文本;从 OpenAPI 生成 mock。
从项目导入导入 → 从项目导入预览并导入以文件形式保存在当前项目中的集合。
请求设置工具 → 设置当前请求的超时、重定向、SSL、cookie 和 URL 编码。
代码生成器⋮ → 生成代码以 26 种不同输出查看请求对应的代码并复制。
生成的 cURL⋮ → 导出 cURL把请求复制为 cURL 命令。
保存到集合⋮ → 保存,或在横屏平板上按 Ctrl+S选择一个集合或输入新名称。
集合起始页 → 集合;手机上 ⋮ → 集合;平板上点文件夹图标搜索、创建、载入请求、运行、导出、保存到项目、删除。
导出集合 → 某个集合的 ⋮ → 导出以五种格式预览并复制一个集合。
历史记录起始页 → 历史记录;手机上 ⋮ → 历史记录搜索、筛选、载入、加星标、比较、用作 mock、清除。
比较响应历史记录 → 某条记录的 ⋮ → 与…比较,再选另一条记录查看两个响应在正文和标头上的差异。
执行器集合 → ⋮ → 运行运行集合中的每个请求,可设置迭代次数或使用数据文件(Pro)。
负载测试⋮ → 负载测试多次发送当前打开的 REST 请求并查看延迟百分位数(Pro)。

起始页

起始页是模块打开时的第一个屏幕。它没有 URL 栏、协议选择器或工具按钮:这些都属于请求屏幕。窗口宽度大于高度时,它显示两列。

API Tester start screen on a tablet: the title on the left, and the New request, Collections and History cards on the right
平板上的起始页:左侧是标题,右侧是新建请求、集合和历史记录
API Tester start screen on a phone: a New request card listing the seven protocols, with Collections and History cards under it
手机上的起始页:新建请求卡片下列出各协议,再往下是集合和历史记录的计数

起始页提供什么

你可以

  • 点击新建请求。卡片列出六种协议(REST · WS · GQL · SSE · IO · MQTT),并打开请求屏幕。
  • 点击集合或历史记录。每张卡片显示你有多少条,没有时显示空。
  • 使用顶部的实时标签条,它只在有内容运行时才出现:每个打开的请求、带端口的 Mock Server、已连接的 WebSocket、SSE、Socket.IO 和 MQTT 会话、一次负载测试或一次集合运行。点击其中一个,就会回到它。

你不能做什么,以及原因

  • 在起始页选择协议、输入 URL、选择环境或打开工具:这些都不在那里。有意为之
  • 通过回到起始页来关闭实时连接:它们会继续运行,这正是设有这些标签的原因。有意为之

请求(REST)

REST 请求在这里构建和发送。一个请求有六个部分:参数、Headers、正文、Auth、Scripts 和设置。其他协议使用同一个 URL 栏和上下文行,各自带一个面板(见其他协议)。

四种布局

布局取决于窗口,而不是设备,所以分屏的平板会得到手机布局。

手机,竖屏(宽度小于 600 dp)URL 栏下方有一个请求 | 响应切换,六个部分显示为标签页。发送后会自动切换到响应。
手机,横屏(宽度 600 dp 或以上,高度小于 480 dp)各部分显示为标签页,请求与响应之间有可拖动的分隔条。键盘弹出时,响应会缩成 48 dp 的窄条。
平板,竖屏请求在上、响应在下,带可拖动的分隔条和 30 / 50 / 70 % 预设。各部分以手风琴形式展开;集合是侧边抽屉(文件夹图标)。
平板,横屏(宽度 840 dp 或以上、高度 480 dp 或以上,且宽度大于高度)带可拖动分隔条的三列:集合侧边栏、带多个已打开请求标签页的请求,以及响应。双击分隔条可重置。

URL 栏、上下文行和 ⋮ 菜单

输入 URL(等宽字体,不自动大写)。如果没有 http:// 或 https://,应用会加上 https://。它下面的上下文行包含协议菜单、环境菜单、工具图标和 ⋮ 菜单。

你可以

  • 在八种方法中选择:GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS 和 TRACE,每种有自己的颜色。REST 和 GraphQL 会显示方法选择器。
  • 点击发送(纸飞机)。请求运行期间它会变成取消请求。
  • 选择协议:REST、WebSocket、GraphQL、SSE、Socket.IO 或 MQTT。
  • 选择当前环境,或选择无环境;管理环境会打开编辑器。
  • 打开 ⋮ 菜单:新建、复制(在名称后加上“ (copy)”)、保存、导出 cURL、生成代码和负载测试。在手机上它还会列出首页、集合和历史记录。

你不能做什么,以及原因

  • 选择 GraphQL 请求的方法:选择器就在那里,但该面板始终发送 POST。尚未提供
  • 给请求命名:没有对应的字段,所以你保存的请求都叫 New Request(导入的请求保留自己的名称)。尚未提供

工具面板

共五行,每行都有一句话说明里面有什么,右侧是它的实时状态:当前环境、Mock Server(例如 :8090 · 已服务 3 个)和已存储 cookie 的数量。这个面板只能从请求屏幕打开,不能从起始页打开。

行它会打开什么
环境基础 URL、令牌和变量
Mock Server在本地端口提供预设响应
Cookies服务器在本设备上存储的内容
导入cURL、Postman、OpenAPI、HAR
设置超时、重定向、SSL
Tools sheet with the Environments, Mock Server, Cookies, Import and Settings rows
工具:每个面板一行,每行都有一句话说明里面有什么

参数与 Headers

两者都是键值列表,使用同一个编辑器。标签页上带有已启用行数的计数(例如 Headers 25)。新请求默认带有一个 Content-Type: application/json header。

你可以

  • 用添加参数或添加 header添加行,用各自的复选框启用或停用,拖动可重新排序,滑动可删除。
  • 打开某一行的详情,可以添加说明,或打开密钥值:该值在界面中会被遮蔽,并且不会出现在导出的 cURL 和生成的代码中。
  • 用批量编辑粘贴 Key: value 形式的多行内容。

你不能做什么,以及原因

  • 从列表中选择常用 header:没有 header 自动补全。尚未提供
  • 让查询参数自动做百分号编码:它们按你输入的内容加到 URL 上,编码 URL开关没有任何作用。尚未提供

正文

你可以

  • 选择类型。None、JSON、Form URL-Encoded、Multipart Form 和 Raw Text 是标签;XML、HTML、JavaScript、Binary 和 GraphQL 在更多…下面。共十种,在所有语言中都用英文命名。
  • 在 JSON 中:行号、实时校验(JSON 无效:…)以及美化 / 压缩。
  • 在 Form URL-Encoded 和 Multipart Form 中:键值行。Multipart 的行可以是文本字段或文件字段(选择文件,通过系统文件选择器)。
  • 在 Binary 中:选择二进制文件。在作为正文类型的 GraphQL 中:一个查询和变量 (JSON)。
  • 在原始文本、JSON、XML、HTML、JavaScript 正文和表单字段中使用 {{variables}}:发送时它们会被替换。

你不能做什么,以及原因

  • 在正文编辑器中获得语法高亮。有意为之
  • 为 GraphQL 正文设置操作名称,或在它的查询和变量中使用 {{variables}}。尚未提供

认证

在认证类型菜单中选择类型;只会显示该类型的表单。

No Auth不添加任何内容。
Bearer Token一个令牌和一个前缀(默认 Bearer)。
Basic Auth用户名和密码。
API Key一个键名、一个值,以及放在哪里:header 或查询参数。
OAuth 2.0四种授权类型,见下文。
Digest Auth用户名和密码。realm、nonce 等其余内容来自服务器的 401 质询。
AWS SignatureAccess key ID、Secret access key、Region(默认 us-east-1)、Service,以及可选的 Session token。请求使用真正的 SigV4 签名。
Custom一个 header 名称和一个值。
Hawk Auth、NTLM Auth带有即将推出标记。它们目前什么也不做。
Authentication type menu listing No Auth, Bearer Token, Basic Auth, API Key, OAuth 2.0, Digest Auth, AWS Signature, Hawk Auth and NTLM Auth, the last two marked Soon
认证类型:类型列表,其中 Hawk 和 NTLM 标有“即将推出”

你可以

  • 选择授权类型:Authorization Code、Client Credentials、Password Credentials 或 Implicit。
  • 使用 Client Credentials 时,填写 Token URL、Client ID、Client Secret 和 Scope,然后点击获取令牌。
  • 使用 Authorization Code 时,点击打开浏览器,登录后,从你被送回的地址中复制 code 的值,粘贴到授权码下,再点击兑换授权码。
  • 使用 Password Credentials 或 Implicit 时,自己把令牌粘贴到访问令牌中:没有对应的按钮。
  • 在凭据中使用 {{variables}}。想让令牌不显示出来,就把它存为密钥环境变量,并在这里写 {{token}}。

你不能做什么,以及原因

  • 让应用替你捕获 OAuth 重定向:模块无法注册回到应用的链接,所以由你粘贴授权码。有意为之
  • 使用 PKCE 或刷新令牌。尚未提供
  • 把 OAuth 2.0 令牌发送到 Authorization: Bearer … header 以外的任何位置。尚未提供
  • 使用 Hawk 或 NTLM:选择它们后,发送时什么也不会发生。尚未提供
  • 遮蔽你在认证中输入的内容:令牌和密码在此屏幕上以明文显示。尚未提供

脚本与断言

Scripts 部分有三块:断言(无需代码)、请求前脚本和测试脚本。

你可以

  • 用添加断言添加一条断言:一个字段(Status code、Response time、Header、Body (JSONPath) 或 Body size)、一个运算符(equals、does not equal、contains、does not contain、is greater than、is less than、exists、does not exist)和一个期望值。断言始终会运行,不需要 JavaScript 引擎。
  • 插入九个快速模板之一:Status is 200、Status is 2xx、Response time < 500ms、Has JSON body、Body not empty、Has Content-Type、JSON schema valid、Body contains string、Array length > 0。
  • 为请求前脚本和测试脚本编写 JavaScript。它们在隔离的引擎(androidx.javascriptengine)中运行,每次都是全新的引擎,所以崩溃的脚本不会让应用崩溃。
  • 使用 pm 子集:pm.test(name, fn);pm.expect(value) 及 equal、include、above、below、within、an(type)、empty 和它们的 not 形式;pm.environment.get 与 pm.environment.set;pm.globals.get(只读);pm.request(method、url、headers、body:只读副本);在测试中还有 pm.response(code、status、headers、responseTime、text()、json() 以及 to.have.status / header / jsonBody);以及 console.log / info / warn / error。
  • 放心依赖 pm.environment.set 会被保存:它先更新已有的全局变量,再更新当前环境中的变量,否则在当前环境中新建一个(没有当前环境时则新建全局变量)。
  • 在响应的测试标签页中查看结果,在控制台中查看脚本的输出。

你不能做什么,以及原因

  • 使用 Postman API 的其余部分:pm.sendRequest、pm.variables、pm.collectionVariables、setNextRequest、require 和 pm.globals.set 都不存在,脚本不能修改请求,也没有异步。需要它们的 Postman 脚本会在控制台中以 Script error: … 结束。有意为之
  • 在没有较新 WebView 的设备上运行脚本:脚本会被跳过,控制台中出现一条警告,只有断言会运行。设备
  • 让集合或文件夹的脚本运行:它们会被导入并保存,但只有请求自己的脚本会执行。尚未提供
  • 按 JSON schema 校验正文:JSON schema valid 模板只检查正文是不是 JSON。尚未提供

设置

有三项设置直接放在设置部分里;请求设置面板(工具 → 设置,“仅影响当前打开的请求”)有五项。它们跟随请求一起保存。

你可以

  • 直接设置超时 (ms)(任意数字,默认 30000),或在面板中选择 5、10、15、30、60 或 120 秒。一个值同时管连接、读取和写入。
  • 切换跟随重定向和验证 SSL。
  • 切换启用 Cookie和编码 URL:只能在面板中操作。

你不能做什么,以及原因

  • 设置代理、客户端证书或最大重定向次数:没有任何屏幕提供它们。尚未提供
  • 让编码 URL起作用:开关在那里,但发送时会忽略它。尚未提供
关闭验证 SSL 后,任何证书和任何主机名都会被接受。

打开的请求、保存与快捷键

在横屏平板布局中,请求列有多个已打开请求的标签页,并支持这些快捷键:

快捷键操作
Ctrl+Enter发送(在流式协议中为连接 / 断开)
Ctrl+T新建标签页
Ctrl+W关闭标签页
Ctrl+S保存到集合

你可以

  • 打开新建标签页,切换标签页,用 ✕ 关闭它们。圆点表示请求在保存后有改动;空请求显示为无标题。
  • 点击 ⋮ → 保存,会看到保存到集合:选择一个集合(会显示它的请求数量),或输入新名称并点击创建。
  • 使用 ⋮ 菜单中的复制和新建,并用导出 cURL打开生成的 cURL,再点击复制。

你不能做什么,以及原因

  • 在手机或竖屏平板上用标签页打开请求:标签页只存在于横屏平板布局,快捷键也是一样。也没有 Ctrl+F 或 Ctrl+K。有意为之
  • 切换标签页时保留响应:它会被清除。尚未提供

响应

该面板有四种状态:空(发送请求以查看响应)、加载中(正在发送请求…)、成功和错误。在竖屏手机上,摘要显示在切换按钮本身上,例如 响应 · 200 · 679 ms。

A 200 REST response on a phone with the Request and Response switch, the Body, Headers, Cookies and Tests tabs, the two JSON filters and the JSON tree
手机上的 REST 响应:请求 | 响应切换、标签页,以及带两个筛选器的 JSON 树

状态与标签页

你可以

  • 查看按范围着色的状态标签(2xx 绿色、3xx 青绿色、4xx 橙色、5xx 红色),以及总耗时、大小和内容类型。
  • 在六个标签页之间切换,顺序为:正文、Headers(带数量;可复制任一 header)、Cookies(name=value、域名和路径,带 Secure 和 HttpOnly 标记)、测试(断言和脚本结果;为空时显示此响应没有运行测试)、时间线和控制台。
  • 查看时间线:DNS、TCP、TLS、TTFB 和 Transfer,外加 Total。
  • 查看控制台:整个会话的日志(发送、脚本、Mock Server、连接),带时间和级别:LOG、INFO、WARN 或 ERROR。

你不能做什么,以及原因

  • 查看协议、远程 IP 或重定向链:面板不显示它们。尚未提供
  • 查看请求失败的原因:遇到网络、TLS 或超时错误时,面板只显示一个 0 Error 标签和空正文。原因会写入控制台日志。尚未提供
  • 清空控制台:它没有清除按钮。尚未提供

正文

你可以

  • 用右下角的悬浮按钮切换视图:Pretty、Raw 或 Preview。复制按钮紧挨着它。
  • 在 Pretty 下,浏览可折叠的 JSON 树,它有两个筛选器:搜索键…和 JSONPath 筛选 · $.a.b[0].c(精确路径;什么也没找到时显示未找到匹配该路径的结果)。
  • 打开某个节点的 ⋮ 菜单:复制值、复制路径和保存为变量(选择一个环境和一个名称)。
  • 在 Raw 下,查看等宽文本;超过 512 K 字符的正文会使用虚拟化列表。
  • 在 Preview 下,text/html 会在关闭 JavaScript 的 WebView 中渲染;其他任何类型都会显示此内容类型没有可用的预览。

你不能做什么,以及原因

  • 让 XML 或 HTML 自动格式化:只有 JSON 会被格式化,其他内容原样显示。尚未提供
  • 预览图片:预览从未收到图片字节。尚未提供
  • 在正文中搜索并高亮匹配项、跳到顶部或底部,或者分享、保存响应到文件。尚未提供

比较两个响应

比较从历史记录开始,而不是从这个面板:某条记录的 ⋮ → 与…比较,再选另一条记录。步骤见历史记录。

其他协议

在请求屏幕的上下文行中选择协议。下面每个面板都位于请求区域;地址和发送(在流式协议中它负责连接)留在 URL 栏。除了 GraphQL 的端点 URL,其他协议都不会替换 {{variables}}。纯 http:// 和 ws:// 只能连到 localhost、127.0.0.1 和 10.0.2.2;其他一律需要 HTTPS 或 wss://。

GraphQL

你可以

  • 输入端点并点击获取 Schema(标准的内省 POST)。Schema 会显示找到了多少个类型;每个类型展开后是它的字段、字段类型和参数数量,例如 2 个参数。以 __ 开头的类型会被隐藏。
  • 编写查询,以及在可折叠区域中编写变量 (JSON);发送;在常规响应面板中查看结果。查询和变更都以 HTTP POST 发送。

你不能做什么,以及原因

  • 在此面板中设置操作名称、header 或认证:它只发送 Content-Type: application/json。需要认证时,请使用带 GraphQL 正文的 REST 请求。尚未提供
  • 使用订阅:探索器会列出 Subscription 类型,但所有内容都通过 HTTP POST 发送,没有 graphql-ws 传输。尚未提供
  • 查看参数名称:只能看到数量。尚未提供

WebSocket

输入 ws:// 或 wss://(没有协议头时会加上 wss://)并连接。没有读取超时:连接会一直保持打开,直到你断开或服务器关闭它。

你可以

  • 查看状态:CONNECTING、CONNECTED、DISCONNECTING、DISCONNECTED 或 ERROR。
  • 输入消息,连接后发送。
  • 查看聊天式的日志(发出的在右,收到的在左,带时间),并用清除消息清空。

你不能做什么,以及原因

  • 添加 header 或子协议、自动重连或保存消息模板。尚未提供
  • 发送或读取二进制消息:只支持文本。尚未提供
  • 在 URL 中使用 {{variables}}。尚未提供

SSE

输入流的 URL 并连接。应用发送带 Accept: text/event-stream 的 GET,没有读取超时。

你可以

  • 查看状态(CONNECTING、CONNECTED、DISCONNECTED 或 ERROR)和计数,例如 12 个事件。
  • 查看事件日志:类型标记、id: … 和 data 的前 300 个字符。

你不能做什么,以及原因

  • 发送 header、按事件类型筛选、自动重连或遵循服务器的 retry: 值。尚未提供
  • 查看每个事件的时间或 retry,或从 Last-Event-ID 恢复:id 会被保留,但既不显示也不发送。尚未提供
  • 使用 {{variables}}、cookie 存储或验证 SSL:这里都不适用。尚未提供

Socket.IO

你可以

  • 输入 URL(例如 http://localhost:3000)和命名空间(默认 /,不会追加任何内容;其他名称会追加到 URL 后面)。
  • 切换自动重连(默认开启)。
  • 用添加监听监听某个事件名,用发送配合 JSON 负载发出事件:它会作为真正的 JSON 值(对象、数组或标量)发送,无法解析时则作为文本发送。
  • 查看聊天式的日志,每个气泡都带有事件名,并可清空。

你不能做什么,以及原因

  • 设置 header、auth、查询参数或传输方式,移除监听,或在一个连接中使用多个命名空间。尚未提供
  • 知道它能和哪些版本的 Socket.IO 服务器通信:客户端是官方的 socket.io-client 2.1.2,由这个库决定。第三方

MQTT

在 URL 栏输入 host 或 host:port。没有端口时应用使用 1883;如果你输入地址时使用 TLS已开启,则使用 8883。

你可以

  • 切换使用 TLS(使用系统证书),并设置客户端 ID(生成为 pocketcode- 加八个字符)、用户名和密码(只有用户名不为空时才会发送;该字段被遮蔽,带显示/隐藏的眼睛图标)。
  • 以 QoS 0(At most once)、1(At least once)或 2(Exactly once)订阅某个主题;订阅列表会显示它们。
  • 发布到发布主题,带文本负载和 QoS。
  • 查看收发的消息,按主题分组。

你不能做什么,以及原因

  • 选择 MQTT 版本:客户端只支持 MQTT 5,所以只支持 3.1.1 的 broker 可能会拒绝连接。尚未提供
  • 以 retain 标志发布。尚未提供
  • 取消订阅、设置遗嘱、keep-alive 或 clean-session、MQTT 5 属性、使用自己的 TLS 证书,或通过 WebSocket 连接。尚未提供

gRPC(此版本中已隐藏)

代码里有一个 gRPC 面板,但此版本把它隐藏了:新建请求卡片和协议菜单里都没有 gRPC。这个面板需要完整的 protobuf-java 库,而应用为了让 Firestore 继续工作没有带上它,所以它暂时还不能在 Android 上运行。等它能运行了再放出来。

集合

集合把保存的请求归在一起。集合是独立的屏幕,而不是共用资料库里的一个标签页:在手机上,它从起始页或 ⋮ 菜单打开,没有标题栏(用系统手势返回);在平板上,竖屏时是侧边抽屉,横屏时是固定的侧边栏。

Collections screen with a search field, two collections and a button to create a new one
集合:搜索、每个集合一行、⋮ 菜单和新建集合的按钮

你可以

  • 按名称搜索集合。
  • 用新建集合(圆形按钮)创建一个。在 Free 上已有一个集合时,它会改为打开 API Tester Pro 窗口。
  • 展开集合以列出其中的请求(带颜色的方法,然后是名称或 URL),点击一个即可载入:你会回到请求屏幕。
  • 打开集合的 ⋮ 菜单:运行(带 Pro 标记)、导出、保存到项目和删除。删除不会要求确认。
  • 用保存到集合把当前请求存入一个集合。
  • 在保存到集合中输入新名称,即可当场创建一个集合。在 Free 上同样受一个集合的上限约束:已有一个时,对话框会关闭并打开 API Tester Pro 窗口。

你不能做什么,以及原因

  • 重命名、移动或重新排序集合或请求,或创建文件夹:没有对应的屏幕。尚未提供
  • 打开文件夹:文件夹(随导入和项目文件一起出现)显示为一行不响应的名称 (n)。你无法在这里展开它们或打开其中的请求,不过执行器会遍历它们。尚未提供
  • 让集合或文件夹的认证、header 或脚本生效:它们会被导入、保存和导出,但发送和运行只使用请求自身的内容。尚未提供
  • 编辑集合的变量:它们只通过导入和项目文件进来,并且只在请求是从该集合载入时才会使用。尚未提供
  • 在 Free 上保留多个集合:新建集合、在保存到集合中输入新名称以及导入,都会打开 API Tester Pro 窗口。Pro

环境与变量

环境是一组有名称的变量,同一时间只能有一个处于激活状态。用 {{name}} 引用变量。

Environments sheet with the None and Default chips, the Default environment card with Add variable, and Global Variables
环境:用标签选择当前环境,用卡片编辑它的变量

环境面板

你可以

  • 从工具 → 环境,或环境菜单 → 管理环境打开它。该面板会阻止截屏。
  • 用标签选择当前环境(无或你自己的某一个);下方的卡片用于编辑。
  • 点击新建环境(对话框会询问名称),删除环境(不会要求确认),并查看哪一个是已激活。
  • 在 KEY 和值两列中编辑变量,并用添加变量添加更多。
  • 把变量锁定为密钥:它的值会用圆点遮蔽,点击眼睛图标可显示,离开后又会重新遮蔽。
  • 打开全局变量(可折叠)并使用添加全局变量:无论哪个环境处于激活状态,它们都可见。
  • 从响应创建变量:在 JSON 树中,某个节点的 ⋮ → 保存为变量。

你不能做什么,以及原因

  • 为每个变量选择作用域、编辑初始值或选择环境颜色:编辑器里只有环境变量和全局变量。尚未提供
  • 导入或导出单个环境:Postman 环境无法导入,Insomnia 的导入会把文件中所有环境的变量压平成一个集合变量列表。尚未提供
  • 在 Free 上拥有第二个环境:创建它会打开 API Tester Pro 窗口。Pro

变量在哪里被替换

会替换的位置URL、查询参数的名称和值、header、原始 / JSON / XML / HTML / JavaScript 正文、form-urlencoded 字段、multipart 正文的文本字段,以及认证凭据(Bearer 令牌、Basic、API Key、OAuth 2.0 访问令牌、Custom、Digest、AWS)。
不会替换的位置GraphQL 正文(查询和变量)、流式协议(WebSocket、SSE、Socket.IO、MQTT)、cookie 和 Bearer 前缀。
优先级先是动态变量,然后是运行器数据文件中的一行,再是集合的变量,然后是当前环境,最后是全局变量:越具体的优先。

动态变量

{{$guid}}(也可写 {{$randomUUID}})、{{$timestamp}}(秒)、{{$isoTimestamp}}、{{$randomInt}}(0 到 1000,或 {{$randomInt(min,max)}})、{{$randomEmail}}(始终在 example.com 下)、{{$randomFirstName}} 和 {{$randomLastName}}。每次都会重新生成;未知的名称保持原样。

密钥在界面中会被遮蔽,在导出的 cURL 和生成的代码中保留为 {{name}}(密钥行显示 ••••••••)。不过发送请求时,真实的值会通过网络发出:必须如此,否则认证就无法工作。

历史记录

历史记录保存你发送过的请求及其响应。它是独立的屏幕,没有标题栏。

History screen with a search field, the Starred, GET, POST, PUT and DELETE filters, six requests grouped under Today and Clear all history
历史记录:筛选器、按日期分组、每条记录有星标和 ⋮ 菜单,以及“清除所有历史记录”

你可以

  • 按 URL 或名称搜索历史记录,并用已加星标和按方法筛选(只提供 GET、POST、PUT 和 DELETE)。
  • 查看按今天、昨天、本周(最近七天)和更早分组的记录,每条带有方法、状态码、耗时和时间。
  • 点击一条记录以载入请求及其保存的响应;用星标标记它。
  • 打开记录的 ⋮ 菜单:与…比较和用作模拟(如果记录没有响应,两者都是灰色)。
  • 点击清除所有历史记录。它不会要求确认。

你不能做什么,以及原因

  • 保留超过 200 条记录:超出后最旧的会被删除,Free 和 Pro 都一样。有意为之
  • 在 Free 上保存超过 10 条历史记录:新请求不会被保存,直到你清除历史。Pro
  • 按日期范围或状态码筛选,或删除单条记录。尚未提供

比较两个响应

  1. 1点击某条记录的 ⋮,选择与…比较。横幅会提示你选择另一条有响应的记录进行比较,并带有取消。
  2. 2点击第二条有响应的记录。比较响应会打开,带有正文和标头,显示新增、删除和未变的行(两者一致时显示没有差异)。
  3. 3差异按行比较;非常大的正文会退回到逐位置比较。

用作 mock

⋮ → 用作模拟会根据该记录向 Mock Server 添加一条路由:它的方法、URL 中的路径部分,以及保存的响应的状态码和正文。这一步不需要 Pro;打开服务器才需要。

集合执行器

执行器会按顺序发送集合中的每个请求(包括文件夹中的),使用当前环境和全局变量,并按迭代报告通过或失败。这是 Pro 功能。

你可以

  • 从集合 → ⋮ → 运行打开它。标题显示执行器,返回手势会回到集合。
  • 选择集合(选择要运行的集合),并用 − 和 + 设置迭代次数(1 到 100)。
  • 选择数据文件(选择文件;CSV 或 JSON)。它的行数会取代迭代次数,并停用步进器;移除数据文件可撤销。CSV 需要一行表头(逗号和双引号,不支持多行字段);JSON 必须是由扁平对象组成的数组。每一行为 {{column}} 变量提供值,优先于集合、环境和全局变量。
  • 点击运行集合,或取消运行。状态显示为空闲、运行中、已完成、失败或已取消;数字显示请求数、测试(通过 / 总数)和耗时;每次迭代都会列出它的请求,带方法、状态码、耗时和通过 / 总数。

你不能做什么,以及原因

  • 在 Free 上运行它:运行会打开执行器,但 API Tester Pro 窗口会出现在它上方,运行集合不会运行任何内容。Pro
  • 在请求之间加延迟、遇到第一个错误就停止、保存响应或在多次运行之间保留变量。尚未提供
  • 保留或导出结果:它们不会被保存。尚未提供
  • 依赖失败状态来反映网络错误:它表示有断言失败,所以一个出错且没有断言的请求不会让运行显示为失败。尚未提供

负载测试

负载测试会多次发送当前打开的 REST 请求并汇总延迟。这是 Pro 功能。多个工作线程同时发送请求,所以你测到的是并行负载,而不是单个客户端的延迟。

你可以

  • 从 ⋮ → 负载测试打开它。目标是当前载入请求的方法和 URL;没有打开请求时显示未选择请求。
  • 设置请求数(最多五位数)、并发数(四位)和爬坡时间(秒)(三位),然后点击开始,或取消。
  • 用并发数(默认 10)设定同时发送请求的工作线程数。它们分摊请求数,每个线程在上一个请求得到应答后立即发送下一个。同时最多 100 个,也不会超过请求数;留空或填 0 表示一次一个。
  • 用爬坡时间(秒)让工作线程在这么多秒内错开启动:n 个线程中的第 k 个(k 从 0 开始)在爬坡时间 × k / n 秒后启动。填 0 则全部同时启动。
  • 查看进度(n / N 个请求);p50、p90、p95 和 p99;平均、最小和最大;请求/秒;成功和失败;状态码分布;以及最多 20 条错误消息。

你不能做什么,以及原因

  • 同时发送超过 100 个请求:并发数上限是 100,也不会超过请求数。有意为之
  • 设置总时长或思考时间:没有对应的字段。尚未提供
  • 测试流式协议:只能测试当前载入的 REST 请求。尚未提供
  • 在 Free 上启动它:屏幕会打开,但开始会打开 API Tester Pro 窗口,不会发送任何请求。该入口没有标记。Pro

Mock Server

一个运行在应用内的小型 HTTP 服务器,用预设响应来应答,适合在真实 API 出现之前先做客户端。打开它是 Pro 功能;设置路由是免费的。

Mock Server sheet, stopped, with port 8090, latency 0, the loopback-only notice and no routes
Mock Server:开关、端口、延迟、仅回环提示和路由

你可以

  • 打开工具 → Mock Server。在标题处把它打开:副标题显示 http://127.0.0.1:<port>,或显示已停止。
  • 设置端口(默认 8090;0 表示让系统选择;运行时锁定)和延迟 (ms)(0 到 60,000),它会加到每个应答上。
  • 查看提示仅监听回环地址:本设备可访问,网络中不可访问。
  • 点击添加路由。新建 Mock 路由会询问方法(GET、POST、PUT 或 DELETE)、路径、状态码和响应正文。每条路由都有开关和删除按钮。
  • 查看已处理请求的日志(面板显示最近 30 条,最多保留 200 条):时间、状态码、METHOD path,以及匹配到的路由,或未匹配到路由。全部清除会清空它。
  • 也可以从其他地方获得路由:导入 OpenAPI(从此 OpenAPI 生成模拟)和历史记录中的用作模拟。

你不能做什么,以及原因

  • 创建后编辑路由,或在对话框中设置它的 header、延迟或优先级:你只能开关它或删除它。导入会用默认值填充这些字段。尚未提供
  • 在关闭模块后保留路由和日志:它们保存在内存中,服务器会随屏幕一起停止。尚未提供
  • 从其他设备或通过 HTTPS 访问它:它只监听回环地址,没有 TLS,所以你的测试数据不会暴露在咖啡馆的 Wi-Fi 上。有意为之
  • 在 Free 上打开它:开关保持关闭,并打开 API Tester Pro 窗口。Pro

它如何应答

在 127.0.0.1 上使用 HTTP/1.1,每个请求一个连接。路由按方法和路径匹配::name 匹配一段,* 匹配一段,** 匹配其余部分;优先级最高的优先,然后是最具体的;末尾的斜杠会被忽略。查询字符串和请求正文会被忽略。没有匹配时,你会得到 404,JSON 正文写着 No mock route matched。

Cookies

Cookie 存储是真实的:它保存响应中的 Set-Cookie header,并按域名(包括子域名)、路径前缀、过期时间和 Secure(仅 HTTPS)把它们发回。它保存在设备的数据库中。在设置中用启用 Cookie可以为单个请求关闭它。

你可以

  • 打开工具 → Cookies。Cookie 存储的副标题会给出数量(例如 已存 3 个);每个 cookie 显示名称、值、Secure 时的锁图标、HttpOnly、域名和路径。
  • 用 ✕ 移除一个,或点击全部清除。
  • 在单个响应的 Cookies 标签页中查看该响应的 cookie。

你不能做什么,以及原因

  • 手动添加或编辑 cookie。尚未提供
  • 彻底删除已保存的 cookie:✕ 和全部清除只会清空显示的列表,设备上保存的副本不会被擦除,所以它们可能重新出现。尚未提供
  • 区分 host-only cookie 和域名 cookie:存储把它们同等对待。尚未提供

生成代码

⋮ → 生成代码会打开代码生成器:选择目标,查看带文件扩展名的代码并复制。同一菜单中的导出 cURL会显示生成的 cURL。

你可以

  • 在 27 个目标中选择,它们产生 26 种不同的输出(cURL 和 Shell — cURL 是同一条命令):cURL、HTTPie、Wget;JavaScript(Fetch、Axios、XHR、jQuery);TypeScript(Fetch);Python(Requests、http.client);Java(OkHttp、HttpURLConnection、HttpClient 11+);Kotlin(OkHttp、Ktor);Swift(URLSession);Go(net/http);PHP(cURL、Guzzle);Ruby(Net::HTTP);C#(HttpClient、RestSharp);Rust(reqwest);Dart(http);R(httr);PowerShell;Shell(cURL)。
  • 得到方法、带已启用查询参数的 URL、已启用的 header 和正文(原始、JSON、XML、HTML、JavaScript、form-urlencoded,或以 {"query":…,"variables":…} 形式表示的 GraphQL)。{{variables}} 会用当前环境解析,密钥除外,它们保留为 {{name}};密钥行显示 ••••••••。

你不能做什么,以及原因

  • 在生成的代码中得到认证,cURL 除外:其他所有目标都会省略它。cURL 会加入 Bearer、Basic、Digest、Custom 和基于 header 的 API Key,但不包括 OAuth 2.0 或 AWS Signature。尚未提供
  • 得到 Multipart 或 Binary 请求的正文:输出为空。尚未提供

导入与导出

导入位于工具 → 导入下。导出按集合(集合 → ⋮ → 导出)和按请求(导出 cURL)进行。

导入

你可以

  • 在导入请求中选择一个格式:cURL、Postman (v2.1)、Insomnia、OpenAPI / Swagger、HAR File 或 OpenAPI YAML。粘贴文本并点击导入;没有文件选择器。
  • cURL 会替换当前请求,其余五种会创建一整个集合,并提示 已导入“name” — N 个请求 或 导入失败:…。
  • 使用 OpenAPI 格式时,勾选从此 OpenAPI 生成模拟,为每个方法和路径添加一条 mock 路由。
  • 点击从项目导入读取以文件形式保存的集合(见保存到项目)。

你不能做什么,以及原因

  • 导入 Postman 环境(只能导入集合),或从文件导入:你只能粘贴文本。尚未提供
  • 在 Free 上导入第二个集合:面板会关闭,并打开 API Tester Pro 窗口。Pro
  • 查看 cURL 导入失败的原因:错误只会写入控制台。尚未提供

各格式导入的内容

格式导入的内容
cURL常见的参数:-X、-H、-d、--data-urlencode、-F、--data-binary、-u、--digest、--ntlm、--proxy、--connect-timeout、-k 和 -L。不会读取 --max-redirs。--proxy 会在发送时生效,但没有任何屏幕会显示它。
Postman (v2.1)文件夹、请求、认证、集合变量,以及请求前脚本和测试脚本。除令牌之外的 OAuth 2.0 状态、response[] 和 protocolProfileBehavior 会被忽略。
Insomnia分组和请求,以及文件中所有环境的变量,压平成一个集合变量列表(同名变量以最先出现的为准)。grpc_request、单元测试、规范和脚本会被忽略。
OpenAPI / Swagger、OpenAPI YAMLJSON 或 YAML 格式的 OpenAPI 3.0 和 Swagger 2.0:每个方法和路径一个请求,按第一个标签归入文件夹。不解析 $ref,也不读取 security。YAML 由一个内置的小型解析器读取:不支持锚点、别名或多文档。
HAR FileHAR 1.2:每个条目一个请求,没有文件夹,也没有响应。

导出

你可以

  • 在导出“name”中,选择 Postman Collection v2.1、Insomnia Export、OpenAPI 3.0、HAR Archive 或 Markdown Documentation,查看预览并复制(已复制到剪贴板)。Markdown 会加入来自你历史记录的响应示例,按方法和 URL 匹配,以最新的为准。

你不能做什么,以及原因

  • 把导出保存为文件或分享:你只能复制它。尚未提供
集合导出不会清除凭据:Postman、Insomnia、OpenAPI 和 HAR 会原样带上请求中的认证和值,Markdown 只会遮蔽标记为密钥的 header。分享之前请先检查导出内容。

保存到项目

集合可以作为纯 JSON 文件镜像到当前项目中,这样你就可以在拉取请求(pull request)中审查它。应用的数据库仍是事实来源:这些文件是你点一下手动写出的副本,不会替你提交任何内容。

保存

  1. 1打开一个项目。没有项目时,集合的 ⋮ 项显示为打开一个项目才能将集合保存为文件,只起说明作用。
  2. 2点击集合 → ⋮ → 保存到项目。应用会写入 .pocketcode/api/<collection>/,并提示已保存到 .pocketcode/api/ — N 个文件。请用应用的 Git 管理器提交以保留更改。
  3. 3想保留这些文件时,用应用的 Git 管理器提交它们。
  • _collection.json 保存集合的 id、名称、认证、header、脚本和变量。每个文件夹是一个带 _folder.json 的子目录。每个请求是一个 <name>.json,由它的名称生成,只含小写字母、数字和连字符(冲突时加 -2、-3;什么都不剩时用 untitled)。
  • 再次保存会清空该目录并从数据库重写,所以你手动对文件做的修改会被覆盖。环境不会被写出。
  • 密钥不会写出。写入之前,应用会清空这些值:认证(Bearer 令牌、密码、API 密钥值、OAuth 2.0 访问令牌和客户端密钥、AWS 密钥和会话令牌等);标记为密钥值或名称看起来像密钥(token、secret、key、password、passphrase、auth、cookie、credential)的行,包括 header、查询参数、表单字段和集合变量;名称像密钥的 URL 查询参数和 user:password@ 形式 URL 中的密码;以及代理密码和证书口令。结构会保留:认证类型、header 名称、用户名和 URL。
  • {{variable}} 引用(单独出现或跟在 Bearer 之后)不是密钥,会原样写出。把令牌保存在密钥环境变量中,并在请求里写 {{token}}。

你可以

  • 在拉取请求中审查这些文件并提交:认证值、密钥行以及名称像密钥的 header、参数和表单字段都以空值保存,所以文件展示的是集合的结构,而不是你的凭据。

你不能做什么,以及原因

  • 把密钥挡在文件里的原始正文或脚本之外:两者都按输入内容原样写出,所以粘贴在那里的令牌会随文件一起提交。有意为之

从项目导入

你可以

  • 从导入面板打开从项目导入(没有打开的项目时,它会说明打开一个项目才能从文件导入集合)。
  • 选择 .pocketcode/api/ 下的一个文件夹并查看预览,预览不会改动你的数据:新集合“name” — N 个请求,或这将用文件中的 M 个请求替换“name”(当前 N 个请求)(当 _collection.json 中的 id 与现有集合匹配时为替换),外加 N 个文件因错误被跳过。
  • 用导入或替换(红色)确认,或点击取消:什么都不会自动应用。
  • 使用替换时,你已有的密钥会保留:文件中为空的值不会覆盖本地同 id 集合里的值(认证类型相同、行相同)。新集合则从这些空值开始。

你不能做什么,以及原因

  • 在 Free 上已经有集合时,从文件导入新集合:会打开 API Tester Pro 窗口。替换已有集合则始终允许。Pro

Free 与 Pro

API Tester 几乎全部免费:六种协议、完整的编辑器、脚本和断言、响应工具、cookie、导入和导出、代码生成、项目文件,以及比较响应。Pro 增加三个工具并解除三项限制。在 Free 上,被阻止的操作会打开同一个窗口 API Tester Pro,文字随操作变化(执行器、Mock Server 或负载测试)。它列出集合运行器、手机上的模拟服务器和并发负载测试,并有解锁 API Tester Pro和暂不两个按钮。解锁 API Tester Pro会关闭 API Tester 并打开 Pro 页面。

功能FreePro
集合1 个。创建(新建集合或在保存到集合中输入新名称)或导入第二个,会打开 API Tester Pro 窗口。无限制
环境1 个(已有一个Default环境)。创建第二个会打开 API Tester Pro 窗口。无限制
请求历史记录10 条。之后新请求不会被保存,直到你清除所有历史记录;会显示消息免费版只保留最近 10 条历史记录,本次请求未被保存。最近 200 条(更早的会被删除)
Mock Server:开启它不可以。开关保持关闭,并打开 API Tester Pro 窗口;仍然可以设置路由。可以
集合执行器不可以。运行会打开它,但 API Tester Pro 窗口会出现在它上方,运行集合不会运行任何内容;集合的 ⋮ 菜单带有 Pro 标记。可以
负载测试不可以。开始会打开 API Tester Pro 窗口;该入口没有标记。可以
其他所有内容:六种协议、脚本、响应工具、cookie、导入和导出、代码生成、项目文件、比较、标签页可以可以
这些限制在设备上检查,发生在你创建、导入集合或保存到新集合、创建环境或保存历史记录时。价格和计费周期请参阅 套餐与价格

隐私与安全

  • 存储了什么,存在哪里。集合、环境、历史记录(每条记录包含它的请求和响应)和 cookie 都存储在你设备上的应用数据库中。
  • 历史记录按你写的样子保存请求。{{token}} 引用仍然是引用;直接输入到认证或 header 里的令牌则按输入内容保存。
  • 密钥。标记为密钥的变量或行会在界面中被遮蔽,在导出的 cURL 和生成的代码中保留为 {{name}} 或 ••••••••,并且从不会被 Cloud Sync 上传。发送请求时会发送真实的值。
  • 项目文件(保存到项目)写出时不含密钥:保存到项目中列出的那些值会以空值保存,{{variable}} 引用保持不变。原始正文和脚本按输入内容原样写出。
  • Cloud Sync(Pro)目前不同步集合和环境(该选项已暂停),它们只保存在你的设备上。
  • 纯 HTTP 只限你自己的设备。http:// 和 ws:// 只对 localhost、127.0.0.1 和 10.0.2.2(Android 模拟器的主机)有效;其他一律必须是 HTTPS 或 wss://。通过纯 HTTP 访问 192.168.x.x 这类局域网地址会被阻止:请使用 HTTPS 或隧道。
  • 证书。只信任系统的证书颁发机构,不信任你自己安装的。关闭验证 SSL 后,任何证书和主机名都会被接受。
  • Mock Server 只监听回环地址:你网络上的其他设备都无法访问它。
  • 工作流会收到从此屏幕发送的每个响应的 URL、方法、状态码和耗时,从不包含正文或 header。
  • AI 助手可以在不打开此模块的情况下通过它发送请求;它最多收到 4096 个字符的响应正文,也不能以 PocketCode 自己的后端为目标。
集合导出(Postman、Insomnia、OpenAPI、HAR)不会清除凭据:认证和值按请求里的样子原样导出,Markdown 只遮蔽标记为密钥的 header。分享导出内容之前请先检查。

限制

目前缺少的内容,集中在一处。“尚未提供”表示代码里留有位置,但没有任何屏幕提供它。

  • gRPC 在代码里,但此版本把它隐藏了:它的面板需要完整的 protobuf-java 库,而应用没有带上这个库,所以暂时还不能在 Android 上运行。尚未提供
  • 纯 HTTP 和 ws:// 只能连到 localhost、127.0.0.1 和 10.0.2.2;局域网地址需要 HTTPS。需要网络
  • 只信任系统的证书颁发机构,所以使用你自己安装的证书的代理无法工作。需要网络
  • 没有代理和客户端证书设置。尚未提供
  • 无法捕获 OAuth 2.0 重定向;你需要自己粘贴 code。没有 PKCE,也没有刷新令牌。有意为之
  • Hawk 和 NTLM 标有“即将推出”,目前什么也不做。尚未提供
  • WebSocket 和 SSE 不能发送 header,也不能自行重连;SSE 会忽略 retry:。尚未提供
  • GraphQL 面板中没有订阅、操作名称、header 或认证。尚未提供
  • MQTT 只支持版本 5,也不能以 retain 发布。尚未提供
  • 脚本只有一小部分 pm 子集,并且需要较新的 WebView。有意为之
  • Mock 路由及其日志只保存在内存中,也没有编辑对话框。尚未提供
  • 集合不能重命名或重新组织,文件夹不能创建或打开,保存的请求全都叫 New Request。尚未提供
  • 从面板中移除的 cookie 不会从保存的副本中擦除。尚未提供
  • 没有图片预览,不能分享或保存响应,网络错误也不显示原因。尚未提供
  • 代码生成器中只有 cURL 输出包含认证。尚未提供
  • 历史记录最多保留 200 条。有意为之
  • MQTT 和 Socket.IO 客户端写出的错误,无论应用使用什么语言,都是西班牙语。尚未提供
  • 原始请求正文和脚本会按输入内容原样写入项目文件(保存到项目):应用无法分辨自由文本里的密钥。有意为之

故障排查

0 Error 和空正文

请求没有得到应答:网络、TLS 或超时失败。面板不显示原因,但应用会把它写入控制台日志,写成以 ✗ Request failed: 开头的一行;错误屏幕没有标签页,所以请在之后收到的下一个响应的控制台标签页中查看(日志涵盖整个会话)。检查地址、你的网络连接和超时 (ms)。在 localhost、127.0.0.1 和 10.0.2.2 之外使用纯 http:// 地址会被阻止:请使用 HTTPS。

请求已取消

你在应答到达之前点击了取消请求(或请求被取消了)。没有任何问题。

点击运行集合、开始或 Mock Server 开关后出现 API Tester Pro 窗口

在 Free 上,这三项是 Pro 功能,窗口会告诉你你试的是哪一项。创建第二个集合或环境(包括在保存到集合中输入新名称),或在已有集合时导入集合,也会打开同一个窗口。暂不会关闭它;解锁 API Tester Pro会打开 Pro 页面。

免费版只保留最近 10 条历史记录,本次请求未被保存。

Free 的历史记录最多 10 条。点击清除所有历史记录腾出空间(无法单独删除某一条),或升级到 Pro。

JSON 无效:…

JSON 正文无法解析;冒号后面的文字指出了问题所在。发送前先修复它,有效之后可以使用美化。

导入失败:…

粘贴的文本与你选择的格式不匹配,或文档格式有误。请选择正确的格式。cURL 没有这条消息:错误在控制台日志中。

无法保存到项目:…

应用无法在当前项目中写入 .pocketcode/api/;冒号后面的文字说明了原因。

打开一个项目才能将集合保存为文件

保存到项目和从项目导入作用于当前打开的项目。请先打开一个。

此项目的 .pocketcode/api/ 下未找到任何集合

当前项目没有带 _collection.json 的 .pocketcode/api/ 文件夹。请先把集合保存到项目,或打开正确的项目。

无法将该文件解析为 CSV 或 JSON 数据行

执行器的数据文件如果是 CSV,需要一行表头(逗号和双引号,不支持多行字段);否则必须是由扁平对象组成的 JSON 数组。

无法获取令牌:…

OAuth 2.0 令牌请求失败;冒号后面的文字说明了原因。检查 Token URL、Client ID 和 Client Secret。使用 Authorization Code 时,只粘贴 code 的值。

响应中未包含可解析的 schema

GraphQL 端点没有用 schema 回应内省查询。检查 URL;有些服务器会关闭内省。

MQTT 或 Socket.IO 面板中的错误:…

连接失败;冒号后面的文字说明了原因。检查主机、端口和使用 TLS。对于 MQTT,请确认 broker 支持 MQTT 5。有些消息是西班牙语,例如 El host no puede estar vacío。

此内容类型没有可用的预览

Preview 只渲染 text/html。其他类型请使用 Pretty 或 Raw;图片无法预览。

未找到匹配该路径的结果

JSONPath 筛选查找的是精确路径,例如 $.a.b[0].c,而不是搜索。请从 $ 开始。

此响应没有运行测试

请求没有断言,并且它的测试脚本(如果有)从未调用 pm.test 或无法运行。请在 Scripts 中添加一条断言。

JavaScript engine unavailable on this device

这是一条控制台警告:此设备没有供脚本引擎使用的较新 WebView,所以请求前脚本或测试脚本没有运行。断言仍然会运行。

Script error: …

你的脚本抛出了错误,通常是因为它用到了 Postman API 中不存在的部分(pm.sendRequest、pm.variables、require……)。只有文档中列出的 pm 子集可用。

No enabled routes: every request will get 404 until you add one

当你在没有已启用路由的情况下打开 Mock Server 时,控制台会出现这条警告。正文为 No mock route matched 的 404 表示方法或路径没有匹配任何路由。如果控制台显示 Mock server could not start: …,说明端口很可能已被占用:请换一个端口,或设为 0。