You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Nock.js对POST请求进行正则路径匹配?

Nock中POST请求的正则路径匹配实现及写法验证

你的这段写法不完全正确,问题出在路径的正则匹配方式上。

Nock里要实现正则路径匹配,不能用字符串形式的'/v1/secrets/*$'——这种写法会被当作普通字符串路径来匹配,而非正则表达式。正确的姿势是直接传入RegExp正则对象。

正确的POST正则匹配写法

nock('https://base-url.com')
  .post(/^\/v1\/secrets\/.*$/, {
    username: 'pgte',
    email: 'pedro.teixeira@gmail.com',
  })
  .reply(200);

细节说明

  • 正则/^\/v1\/secrets\/.*$/会匹配所有以/v1/secrets/开头的子路径,比如/v1/secrets/123、/v1/secrets/user-token这类都能命中
  • 如果需要更精准的匹配规则,可以调整正则:比如只匹配数字结尾的路径,用/^\/v1\/secrets\/\d+$/即可

链式处理多个请求

如果要链式匹配多个不同请求,直接在同一个nock实例后链式调用请求方法就行,比如同时匹配POST和GET请求:

nock('https://base-url.com')
  // 匹配符合规则的POST请求
  .post(/^\/v1\/secrets\/.*$/, {
    username: 'pgte',
    email: 'pedro.teixeira@gmail.com',
  })
  .reply(200, { code: 0, msg: 'secret saved' })
  // 匹配符合规则的GET请求
  .get(/^\/v1\/users\/\d+$/)
  .reply(200, { id: 123, username: 'pgte' });

内容的提问来源于stack exchange,提问作者Boris K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:35:18