
APIs com ASP.NET Core
32 - Swagger
Olá pessoal, nessa trigésima segunda aula do treinamento de Criando APIs com ASP.NET Core, vamos aprender a trabalhar com o Swagger.
O Swagger serve para documentarmos nossas APIs, especificando as rotas e também as entidades disponíveis. Também é possível realizar testes em nossas APIs, fazendo com que o Thunder Client não precise ser utilizado.
Podemos trabalhar com o Swagger em várias tecnologias, como por exemplo: Spring (Java e Kotlin), PHP, Python, etc...
Para efetuarmos o uso do Swagger é muito simples, siga os passos abaixo:
1º Instale o pacote do Swagger: dotnet add package Swashbuckle.AspNetCore.Swagger --version 6.8.1
2º Vamos implementar o arquivo Program.cs:
Pronto! Com essas duas etapas, podemos atualizar nosso servidor (CTRL + R) e acessar a rota, exemplo: localhost:5081/swagger.
Complemento
Muitos inscritos pedem materiais complementares sobre o Swagger, então darei algumas dicas abaixo de anotações utilizadas e também como implementar no arquivo de rotas:
- [SwaggerOperation]
- Purpose: Adiciona informações de resumo e descrição para cada operação no Swagger. Essas informações aparecem na documentação da API para que os desenvolvedores saibam o propósito de cada endpoint.
- Properties:
- Summary: Breve descrição da operação (ex: "Cadastrar uma nova pessoa").
- Description: Descrição mais detalhada da operação (ex: "Esta rota permite cadastrar uma nova pessoa fornecendo as informações como nome, cidade e idade.")
- [SwaggerResponse]
- Purpose: Define as respostas possíveis para uma operação, incluindo o código de status HTTP e o tipo de conteúdo retornado. Ajuda a documentar os resultados possíveis de uma rota na documentação Swagger.
- Properties:
- HTTP Status Code: O código de status HTTP que será retornado (ex: 200, 201, 400, 404).
- Response Type: O tipo de dado esperado na resposta (por exemplo, um objeto de tipo `Pessoa`, ou um tipo genérico como `string`).
- [FromBody]
- Purpose: Indica que o parâmetro de um método (como o modelo `Pessoa`) será passado no corpo da requisição HTTP (request body). É usado para parâmetros que precisam ser deserializados de JSON, por exemplo.
- Example: No método `Cadastrar([FromBody] Pessoa p)`, o objeto `Pessoa` é passado no corpo da requisição.
- [FromRoute]
- Purpose: Indica que o valor do parâmetro será extraído da URL da rota (no caminho da URL). Este é o caso para parâmetros como um ID de recurso (ex: `codigo` na rota de alteração ou remoção).
- Example: No método `Alterar(int codigo)`, o `codigo` é passado como parte da URL (ex: `/pessoa/{codigo}`).
- [Required]
- Purpose: Indica que o campo é obrigatório e não pode ser `null` ou vazio. Usado no modelo `Pessoa` para garantir que certos campos, como `Nome` e `Cidade`, sejam fornecidos.
- Example: `[Required] public string Nome { get; set; }` no modelo `Pessoa` assegura que o nome não seja nulo ou vazio.
- [StringLength]
- Purpose: Restringe o comprimento de uma string a um valor máximo ou mínimo. Pode ser útil para garantir que campos como `Nome` não ultrapassem um certo número de caracteres.
- Example: `[StringLength(100)] public string Nome { get; set; }` limita o campo `Nome` a no máximo 100 caracteres.
- [Range]
- Purpose: Define um intervalo válido de valores para um campo numérico, como a idade, que precisa estar entre 0 e 120.
- Example: `[Range(0, 120)] public int Idade { get; set; }` garante que a idade esteja dentro do intervalo de 0 a 120.
Vamos ver na prática? Veja como fica nosso arquivo de controle com as data annotations acima:
Acompanhe a aula abaixo, onde ensino como implementar essa etapa do treinamento.
Torne-se membro! a partir de R$7,99 por mês.Abaixo compartilho o vídeo da nossa aula no YouTube, bons estudos!