Я использую Swashbuckle и Swagger UI в проекте .NET Core 3.1, а мои XML-комментарии импортированы в Swagger. У меня есть запрос POST на контроллере, для которого я хочу зарегистрировать несколько статусов ответа (201, 401, 403, 404) в Swagger. Проблема в том, что я также вижу ответ 200 Success, указанный рядом с моими явно указанными ответами с кодом состояния в файле swagger.json
и интерфейсе пользовательского интерфейса Swagger.
Как было предложено в нескольких разных местах, я использую атрибут [SwaggerResponseRemoveDefaults]
, чтобы попытаться предотвратить это, однако все, что я пробую, по-прежнему приводит к отображению ответа по умолчанию 200.
Я пробовал:
- добавление атрибута в метод,
- добавление атрибута в контроллер,
- добавление атрибута к абстрактному базовому контроллеру,
и все комбинации вышеперечисленного. Я также пробовал их в сочетании с:
- указание желаемых типов ответов с помощью тегов комментариев XML
<response code="XXX"></response>
, и - указание желаемых типов ответа с
[SwaggerResponse(XXX)]
конечными точками.
Ничто не приводит к удалению результата 200 Success из моего пользовательского интерфейса Swagger и swagger.json
.
TrackerController.cs
/// <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)
{
...
}
...
}
swagger.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."
}
}
}
}
}
}
Скриншот пользовательского интерфейса Swagger