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

Cypress调用本地stub服务器PATCH接口报404,Postman调用同接口正常

问题原因排查及解决方案

核心原因(90%概率)

你遇到的404错误大概率是URL拼接错误导致的,你的代码中手动拼接baseUrl和路径的写法存在斜杠缺失的隐患:

  • 如果你Cypress配置的baseUrl是http://localhost:8882(末尾没有斜杠),拼接出来的最终请求地址会变成http://localhost:8882test/api,和Postman使用的http://localhost:8882/test/api不一致,自然会触发404。

排查步骤

  1. 先确认最终请求地址是否正确,在你的自定义命令中加入日志打印拼接结果:
const options = {
  method: 'PATCH',
  url: `${Cypress.env().baseUrl}test/api`,
  retryOnStatusCodeFailure: true,
  log: true,
  body: {
    id,
  },
}
// 新增日志,运行时在Cypress界面查看打印的地址是否和Postman调用的完全一致
cy.log('请求地址', options.url)

如果确认是拼接缺少斜杠,直接选用以下任意一种方案修复即可:

  • 方案1:修改Cypress的baseUrl配置,末尾补充斜杠,示例:baseUrl: "http://localhost:8882/"
  • 方案2:不需要手动拼接baseUrl,直接给url字段加前缀斜杠,Cypress会自动和配置的baseUrl拼接:
const options = {
  method: 'PATCH',
  url: `/test/api`, // 开头加斜杠即可
  // 其余配置保持不变
}
  • 方案3:直接写完整请求地址,绕过拼接逻辑:
const options = {
  method: 'PATCH',
  url: `http://localhost:8882/test/api`,
  // 其余配置保持不变
}

其他小概率排查方向

如果确认地址完全一致还是返回404:

  • 检查stubby的路由配置,是否对PATCH请求额外限制了请求头、query参数等匹配规则
  • 检查Cypress是否配置了全局代理,把8882端口的请求代理到了其他服务
  • 打开stubby的访问日志,对比Cypress发起的请求和Postman发起的请求的路径、请求头差异

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:21:03