webentwicklung-frage-antwort-db.com.de

Antwortmodell für bestimmte Statuscodes mit Swagger

Ich benutze Swagger , um meine REST API zu dokumentieren (mit asp.net web api 2). Gibt es eine Möglichkeit, in Swagger Antwortmodelle für jede mögliche Antwort für einen bestimmten API-Aufruf anzugeben? Ich kommentiere die Statuscode-Antwort mit den XML-Kommentaren wie folgt:

    /// <summary>
    /// Save a person
    /// </summary>
    /// <response code="200">Ok</response>
    /// <response code="400">Bad Request</response>
    /// <response code="500">Internal Server error</response>
    public HttpResponseMessage SavePerson() {...}

enter image description here

9
Kaladin

Sie können versuchen, cref = "TYPE HERE" für Ihre XML-Kommentare wie diese zu verwenden.

/// <response code="400" cref="CustomErrorModel">Bad Request</response>

Aber ich würde vorschlagen, Anmerkungen zu verwenden, die Swagger Ihnen gibt.

[SwaggerResponse(HttpStatusCode.OK, Type = typeof(OnlineMerchantQueryResponseInformation))]

weisen Sie Ihren Controllern dies zu.

23
EvilToaster101

Ihre Signatur besagt, dass Sie eine HttpResponseMessage zurückgeben, kein Datenmodell. Wenn Sie ein IActionResult zurückgeben, können Sie das Attribut "ProducesResponseType" verwenden.

[ProducesResponseType(typeof(IEnumerable<YourModel>), 200)]

ProducesResponsesType befindet sich im Microsoft.AspNetCore.Mvc-Namespace.

Siehe https://github.com/domaindrivendev/Swashbuckle.AspNetCore#list-operation-responses "Explicit Responses"

5
Elton

Du kannst es versuchen

 [SwaggerResponse(200, typeof(CustomModel))]

und Sie fügen zusätzlich einen Kommentar für diesen Antworttyp als optionalen dritten Parameter hinzu

[SwaggerResponse(200, typeof(CustomModel), "returns a new id of the bla bla")]
1
L. Mihai