poniedziałek, 2 stycznia 2023

Swagger Undocumented Status Code - dokumentacja kodów zwracanych przez akcje Controllera

Poniższy kawałek kodu obrazuje prostą metodę zwracającą pojedynczą książkę na podstawie jej identyfikatora. Jeżeli identyfikator jest mniejszy lub równy zero zwracamy błąd Http Status Code 400 (zakładamy w tym przypadku, że w naszej bazie danych książki posiadają identyfikatory od 1 w górę).

    [HttpGet("{id:int}")]
    public async Task<ActionResult<BookDto>> GetBook(int id)
    {
        if (id <= 0)
        {
            return BadRequest();
        }
        //... Code, code...
     }
Kod jest jak najbardziej poprawy. Co może nas zdziwić, to że uruchamiając aplikację i testując ją pojawi nam się dziwny komunikat o braku dokumentacji dla kodu 400:



Powyższy brak można rozwiązać za pomocą atrybutu ProducesResponseType. Za jego pomocą definiujemy możliwe rezultaty z naszej metody jak i możemy jawnie wskazać scheme którą zwraca nasz serwis (w naszym przypadku nie jest to potrzebne ponieważ zwracamy typ ActionResult<BookDto>>):

    [HttpGet("{id:int}")]
    [ProducesResponseType(StatusCodes.Status200OK)]
    [ProducesResponseType(StatusCodes.Status400BadRequest)]
    [ProducesResponseType(StatusCodes.Status404NotFound)]
    public async Task<ActionResult<BookDto>> GetBook(int id)
    {
        if (id <= 0)
        {
            return BadRequest();
        }
        //...code, code...
    }


Uruchamiając ponownie aplikacje z powyższą modyfikacją informacja Undocumented nie pojawi się ponownie. Dodatkowo poniżej otrzymamy listę wszystkich możliwych kodów rezultatów




Brak komentarzy:

Prześlij komentarz