web-dev-qa-db-fra.com

Swashbuckle.AspNetCore Attribut SwaggerOperation introuvable

J'essaie d'utiliser la documentation Autorest et Swagger créée avec l'aide de Swashbuckle.AspNetCore (3.0.0) afin de générer un client API REST.

La documentation swagger générée semble être correcte sauf que le nom de l'opération n'est pas vraiment gentil.

"/api/Addresses/{id}": {
      "get": {
        "tags": [ "Address" ],
        "operationId": "ApiAddressesByIdGet",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": { "200": { "description": "Success" } }
      },

J'ai vu dans de nombreux articles et également dans la documentation officielle de SwashBuckle.AspNetCore que je peux utiliser un attribut pour décorer ma méthode de contrôleur comme ceci:

 [HttpGet]
 [Produces("application/json")]
 [ProducesResponseType((int)HttpStatusCode.NotFound)]
 [ProducesResponseType(typeof(List<AddressDto>), (int)HttpStatusCode.OK)]
 [SwaggerOperation("GetAllAdresses")]
 public async Task<IActionResult> GetAllAsync()
 {
   ....
 }

Malheureusement, j'ai eu une erreur: SwaggerOperationAttribute est introuvable!

J'ai vérifié les paquets de nuget installés et ils sont:

  • SwashBuckle.AspNetCore.Swagger (3.0.0)
  • SwashBuckle.AspNetCore.SwaggerGen (3.0.0)
  • SwashBuckle.AspNetCore.SwaggerUI (3.0.0)

Quelqu'un pourrait m'aider? S'il vous plaît 

9
Sébastien Krejci

J'ai couru à travers cela aujourd'hui. J'avais besoin d'ajouter le paquet de pépites suivant qui vient d'être ajouté pour la V3.0.0:

Swashbuckle.AspNetCore.Annotations

Les changements radicaux sont décrits ici

Notez également que vous devez ajouter les éléments suivants à Startup.cs ou à votre extension Swagger: 

AddSwaggerGen(c => { ... c.EnableAnnotations(); })
13
ScottG

Une autre option consiste à définir la propriété Name pour votre filtre HttpGet comme suit:

[HttpGet(Name = "GetAllAdresses")]
[Produces("application/json")]
[ProducesResponseType((int)HttpStatusCode.NotFound)]
[ProducesResponseType(typeof(List<AddressDto>), (int)HttpStatusCode.OK)]
[SwaggerOperation("GetAllAdresses")]
public async Task<IActionResult> GetAllAsync()
{
   ....
}
0
CoOl