接口调试新姿势

断点总误伤一片?从一条真实请求勾出精确 Mock

联调时最常见的断点用法,是在 Charles、Fiddler 或 Whistle 里写一条 Host / Path 规则,然后打开断点。

规则一开,订单详情、列表轮询、埋点、重试会一起停住。你改第一条的时候,后面几条已经超时,页面也卡住了。条件要写细,还得自己填 Host、Path、Query。接口如果加密,表单里看到的是密文,不知道该匹配哪一段。

DevPeek 把这件事收成向导:对抓到的那条请求右键「Mock」,勾已经拆开的字段,保存成一条规则。本文按这个路径走一遍:精确命中、换返回、把一组边界收成场景。

适用读者

容易卡住的地方

  • 断点打在 Host 或 Path 前缀上,同域的轮询和静态请求都会进暂停队列。
  • 匹配值手写,和线上多一个空格、少一个字段就永不命中。
  • 加密 Body 整段当条件,换一个订单号就失效;按明文里的 orderId 勾,才能只断这一单。
  • 规则保存后会一直生效。勾得很细,也只是「这类请求」都停,不是「只停下一次」。测完把规则或场景关掉。

步骤一:先抓到要断的那条

把客户端代理到 DevPeek,打开要测的页面,在 抓包列表 里点开目标请求,确认 Method、Path、Query 和 Body 就是这次操作发出的那份。

列表里若是密文,先确认参数转换已命中,详情里能看到解密后的明文。向导里的勾选用的就是这份明文。

完成标准: 列表里能点开一条完整的目标请求;加密接口在详情中能看到可读字段。

步骤二:向导里勾匹配条件

在这条请求上右键「Mock」。第一步标题是「拾取条件」。

界面把这次请求拆成 Method、Host、Path、Query、Body、请求头。要多细就勾多细,值来自这条请求,不用手写规则。加密字段会先解密:JSON 可以展开,勾到 orderId 这种子字段,密文本身不用当条件。

常见勾法:

  • 只想挡住这一个接口:Method + Path。
  • 同一接口要按订单区分:再勾 Query 或 Body 里的那一个字段。
  • 要排除别的客户端:再勾一个能区分环境的请求头。

勾得越少,后面误伤越多。同一 Path 的轮询如果 Body 不同,就把那个不同字段勾上。

完成标准: 预览里能看到你勾中的字段和取值,且没有把整站 Host 当成唯一条件。

步骤三:选手动暂停,还是自动返回

第二步是「编辑返回」,二选一。

手动 Mock 勾请求、响应,或两段都要。之后命中这条规则的请求会暂停,弹出篡改窗口;改完点「继续」或「中止」。适合临时改一个字段看页面反应。

自动 Mock 只选请求或响应其中一段,并写好当前版本的篡改内容。命中后按这份内容放行。只 Mock 响应时,可以直接返回你写的状态码和 Body,不必打到真实服务器。适合固定的 404、空列表、错误 JSON。

手动 Mock 的改包发生在命中之后;自动 Mock 的返回要在这一步写好。

完成标准: 保存成功。再触发一次相同操作,手动规则会弹出篡改窗口,自动规则会按你写的内容返回。

步骤四:同一条规则存几套返回

一条规则可以有多份篡改版本,例如「正常」「空列表」「500」。同一时刻只有标成生效的那一版参与 Mock,其余只是备着。

右侧 Mock 面板里展开这条规则,点另一版即可切换,不用另写一条规则,也不用重填匹配条件。它不会按第几次请求自己轮换,要换边界就点那一版。

完成标准: 同一条规则下至少两版;切换生效版本后,下一次命中的返回跟着变。

步骤五:把相关规则收成一个场景

一个边界往往牵着好几条接口。比如「库存不足」要同时改创建订单和支付状态,就做成两条规则,放进同一个场景。

场景是分组,用来整组启停。场景开关是总闸,不改每条规则自己的勾选;条目仍要单独勾上才会生效。多个场景可以同时开着。

匹配不看场景在树上的上下位置。已启用的规则按配置列表从末尾往前找,后写的优先,命中第一条就停。两条规则都可能套住同一次请求时,把更具体的那条留在后面。

完成标准: 场景总闸打开时,组内已勾选的规则会命中;关掉总闸后,这组不再拦截,单条规则的勾选还在。

测完记得关掉

规则和场景会一直留在配置里。精确勾选减少的是「不像的请求被停住」;长得一样的后续请求,包括轮询和重试,仍会再命中。

看完这次结果,关掉这条规则或整个场景,再刷新页面,确认请求已经回到源站。

下一步

匹配条件、手动 / 自动 Mock、篡改版本的字段说明见 Mock 规则。加密接口要先能在详情里看到明文,配置见 参数转换

下一篇

这是「接口调试新姿势」系列当前最后一篇。你可以继续查看 博客列表,或回到 Mock 规则 对照向导里的每一项。


如果你也在断点里一遍遍手写 URL,欢迎 下载 DevPeek 对一条真实请求走一遍向导;规则怎么配见 Mock 规则。遇到对不上的加密字段,可以到 GitHub Discussions 贴一条脱敏请求。

相关文档