2016-06-14 21 views
7

Ich bin Swagger Docs mit Swashbuckle in meinem WebApi 2 Projekt erstellen.Swashbuckle 200 OK-Antwort automatisch zu generierten Swagger-Datei hinzufügen

Ich habe die folgende Definition des Verfahrens:

[HttpPost] 
[ResponseType(typeof(Reservation))] 
[Route("reservations")] 
[SwaggerResponse(HttpStatusCode.Created, Type = typeof(Reservation))] 
[SwaggerResponse(HttpStatusCode.BadRequest) ] 
[SwaggerResponse(HttpStatusCode.Conflict)] 
[SwaggerResponse(HttpStatusCode.NotFound)] 
[SwaggerResponse(HttpStatusCode.InternalServerError)]   
public async Task<HttpResponseMessage> ReserveTickets([FromBody] ReserveTicketsRequest reserveTicketRequest) 
{ 
    // ... 
    return Request.CreateResponse(HttpStatusCode.Created, response); 
} 

jedoch die erzeugte Swagger-Datei als auch HTTP 200 OK enthält, obwohl es nicht überall angegeben ist.

/reservations: 
    post: 
    tags: 
     - "Booking" 
    operationId: "Booking_ReserveTickets" 
    consumes: 
     - "application/json" 
     - "text/json" 
    produces: 
     - "application/json" 
     - "text/json" 
    parameters: 
     - 
     name: "reserveTicketRequest" 
     in: "body" 
     required: true 
     schema: 
      $ref: "#/definitions/ReserveTicketsRequest" 
    responses: 
     200: 
     description: "OK" 
     schema: 
      $ref: "#/definitions/Reservation" 
     201: 
     description: "Created" 
     schema: 
      $ref: "#/definitions/Reservation" 
     400: 
     description: "BadRequest" 
     404: 
     description: "NotFound" 
     409: 
     description: "Conflict" 
     500: 
     description: "InternalServerError" 
    deprecated: false 

Gibt es eine Möglichkeit, diese 200 OK loszuwerden? Es ist verwirrend, da es keine gültige Antwort ist.

Vielen Dank für Anregungen.

Antwort

9

Sie können die Standardantwort (200 OK) entfernen, indem Sie die Methode mit dem Attribut SwaggerResponseRemoveDefaults dekorieren.

+0

Vielen Dank! Das hat den Trick gemacht! –

+0

Gibt es eine Möglichkeit, dies global hinzuzufügen, anstatt jede Methode in meinen Controllern zu dekorieren? – michaelmsm89

+0

Das Attribut kann auch auf einen Controller angewendet werden. Um dieses Verhalten global hinzuzufügen, müssen Sie Ihren eigenen IDocumentFilter erstellen – venerik