当前位置: 首页 > 知识库问答 >
问题:

Swashbuckle Swagger ResponseRemoveDefaults属性仍向Swagger添加200个成功响应

陈松
2023-03-14

我在一个...NET Core 3.1项目,将我的XML注释导入到Swagger中。我在一个控制器上有一个POST请求,我想在Swagger中注册一些响应状态(201, 401, 403, 404)。问题是,在swagger.json文件和Swagger UI界面中,我还看到一个200成功响应与我显式指定的状态代码响应并列。

正如在多个不同的地方建议的那样,我正在使用[SwaggerResseRemveDefaults]属性来尝试并防止这种情况,但是我所尝试的一切仍然会导致列出默认的200响应。

我尝试过:

  • 将属性添加到方法,
  • 将属性添加到控制器,
  • 将属性添加到抽象基本控制器,

以及上述各项的所有组合。我还尝试了以下方法

  • 使用XML指定所需的响应类型

没有任何结果会从我的招摇过市UI和Swagger中删除200个成功结果。json

跟踪控制器。反恐精英

/// <summary>...</summary>
/// <response code="401">User is not authenticated.</response>
/// <response code="404">Tracker not found.</response>
[Authorize]
[ApiController]
[Route("[controller]")]
[SwaggerResponseRemoveDefaults]
public partial class TrackersController : AbstractController
{
    ...

    /// <summary>...</summary>
    /// <param name="tracker">The details of the tracker to be created.</param>
    /// <response code="201">The tracker was successfully created.</response>
    /// <response code="403">User is not authorized to modify this resource.</response>
    [HttpPost]
    [SwaggerResponseRemoveDefaults]
    [ResponseType(typeof(TrackerDto))]
    [SwaggerResponse(201, Description = "The tracker was successfully created.")]
    public async Task<IActionResult> CreateTracker([FromBody] TrackerDto tracker)
    {
        ...
    }

    ...

}

大摇大摆json

{
  "openapi": "3.0.1",
  "info": {
    "title": "My API",
    "version": "v1"
  },
  "paths": {
    "/Trackers": {
      "post": {
        "tags": [
          "Trackers"
        ],
        "summary": "Create a new tracker.",
        "requestBody": {
          "description": "The details of the tracker to be created.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TrackerDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackerDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TrackerDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TrackerDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "201": {
            "description": "The tracker was successfully created."
          },
          "401": {
            "description": "User is not authenticated."
          },
          "403": {
            "description": "User is not authorized to modify this resource."
          },
          "404": {
            "description": "Tracker not found."
          }
        }
      }
    }
  }
}

大摇大摆的用户界面截图


共有1个答案

冯渝
2023-03-14

现在,您正在告诉Swagger您正在生成一个默认类型为200的TrackerDto,另外还有一个响应201。你需要做一对匹配的。

删除响应类型属性,并将类型放在它所属的位置:

[SwaggerResponse(201, Description = "The tracker was successfully created.", typeof(TrackerDto))]

您也可以尝试:

[ProducesResponseType(typeof(TrackerDto), 201)]

重要的是将类型和状态代码放在同一个属性中,以便Swagger知道它们属于同一个属性。

 类似资料:
  • 我正在尝试在我的java spring项目中的swagger定义中添加新的属性。我已阅读文档并特别 https://springfox.github.io/springfox/docs/snapshot/#plugins 例如,我有这个定义: 我想要: 你能帮我在定义中添加meteo属性吗?在本例中,我的目标是以编程方式添加attribute,而不使用注释。

  • 问题内容: $(‘div’).data(‘info’, 1); 我在jquery中创建元素。之后,我要添加属性“数据”。他很喜欢,并且被添加了,但是在DOM中,这并不明显,我无法使用 问题答案: 使用方法: 请注意,这不会创建实际的属性。如果需要创建属性,请使用:

  • 问题内容: 这件事困扰了我一段时间。我为什么不能做: …虽然我可以执行以下操作? 这是什么规则?您能给我介绍一下吗? 问题答案: 您可以向具有的任何对象添加属性。 例如,没有它。 字符串和其他简单的内置对象也没有它。 使用类也没有它。 除非前面的声明适用,否则用定义的类都具有它。 如果使用/的对象没有/ ,通常是为了节省空间。例如,如果有一个命令,那就太过分了- 想象一下一个非常短的字符串的膨胀程

  • 我在jQuery中创建元素。之后,我想添加属性“数据”。他的喜欢,并添加,但在DOM中,这是不明显的,我不能得到的项目,使用 jsfiddle

  • 我正在使用Swagger OpenAPI规范工具,我在其中一个定义中有一个字符串数组属性,如下所示: 我的API生成JSON结果,因此对于上述对象,以下结果出现在响应中: 尝试逗号分隔字符串,如下所示: 预期结果为: 但是编辑器显示错误。"缩进错误" 我想给示例标签赋予多个值,有什么办法吗? 更新 下面的用户Helen给出了正确答案,我有缩进问题,因此有嵌套数组(2d数组) 正确方式: 我的方式(

  • 有一个用户集合