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

如何在Connexion框架Mock中仅返回状态码而不返回响应体?

解决Connexion Mock中PATCH方法仅需返回201状态码的问题

我完全懂你遇到的困扰——Connexion的mock模式在处理只需要返回201状态码、没有响应体的PATCH请求时,会因为找不到响应示例而报错。其实解决起来很简单,核心思路就是在Swagger文件里给201状态码的响应添加一个明确的(哪怕是空的)定义,让Connexion清楚这个请求只需要返回状态码,不需要响应体。

下面给你两种实用的方案:

方案1:添加空示例与可空Schema

在你的Swagger文件中,找到对应PATCH接口的responses区块,给201状态码添加一个空示例,同时指定一个允许为空的Schema。这样Connexion就能识别到该响应不需要内容,仅返回201状态码:

paths:
  /your-target-endpoint:  # 替换成你的实际接口路径
    patch:
      # 保留你原有的parameters、summary等配置
      responses:
        '201':
          description: 资源更新成功
          content:
            application/json:
              schema:
                type: object
                nullable: true
              example: {}

方案2:极简空Schema定义(适配OpenAPI 3.x)

如果你的Swagger基于OpenAPI 3.x规范,还可以直接用一个空Schema来标记无响应体,写法更简洁:

paths:
  /your-target-endpoint:
    patch:
      responses:
        '201':
          description: 资源更新成功
          content:
            application/json:
              schema: {}  # 空对象Schema明确表示无响应体

为什么这能解决问题?

Connexion的mock引擎默认要求每个响应都有可生成示例的依据(要么是example,要么是schema)。当你只写了description而没有任何响应体定义时,它不知道该返回什么内容,就会抛出"No example response was defined."的错误。添加空示例或Schema后,它就会明白这个请求只需要返回指定的201状态码即可。

如果以上方案都不满足你的需求,也可以考虑自定义Connexion的mock解析器,但这会复杂很多——修改Swagger文件无疑是最直接高效的解决方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:16:15