ByteHub

Configurando Geração de Documentação Automática com Spring Boot, OpenAPI e SpringDoc

Cover Image for Configurando Geração de Documentação Automática com Spring Boot, OpenAPI e SpringDoc
Renan Ribeiro Lage
Renan Ribeiro Lage

Introdução

Documentação é um elemento crítico no desenvolvimento de APIs. Ela auxilia desenvolvedores e consumidores da API a entenderem como utilizar os recursos disponíveis. Este artigo abordará como configurar documentação automática em uma aplicação Spring Boot com OpenAPI utilizando o SpringDoc, com foco especial em configurações de segurança, autenticação e customizações.

Requisitos

  • JDK 8 ou superior
  • Maven ou Gradle
  • Spring Boot 2.x

Adicionando Dependências

Inclua a seguinte dependência no arquivo pom.xml:

<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.2.0</version>
</dependency>

Configuração Básica

Com apenas essa dependência, a documentação OpenAPI já estará acessível em http://localhost:8080/swagger-ui.html.

Configurações Avançadas

Segurança e Autenticação

Para configurar informações de segurança e autenticação, você pode ajustar sua classe de configuração OpenAPIDocumentationConfig:

@Configuration
public class OpenAPIDocumentationConfig {

@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info()
.title("Exemplo de API")
.version("1.0"))
.components(new Components()
.addSecuritySchemes("basicScheme",
new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("basic"))
);
}
}

Anotações para Endpoints e DTOs

Anotações podem ser usadas para enriquecer a documentação gerada. Por exemplo:

@RestController
public class UserController {

@Operation(summary = "Obter todos os usuários")
@GetMapping("/users")
public List<User> getUsers() {
// código
}

@Operation(summary = "Obter usuário por ID")
@GetMapping("/users/{id}")
public User getUserById(@PathVariable Long id) {
// código
}
}

Para DTOs:

public class User {

@Schema(description = "ID do Usuário", example = "1", required = true)
private Long id;

@Schema(description = "Nome do Usuário", example = "John Doe")
private String name;

// Getters e Setters
}

Liberar Rotas na Web

Para liberar o acesso ao Swagger UI, você pode adicionar configurações no WebSecurityConfigurerAdapter:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/swagger-ui.html", "/swagger-ui/**", "/v3/api-docs/**")
.permitAll()
.anyRequest()
.authenticated()
.and()
.httpBasic();
}
}

Conclusão

Com essas configurações avançadas, você não apenas gera documentação automática para sua API, mas também incorpora informações cruciais relacionadas à segurança e autenticação, enriquece a documentação através de anotações e garante que o Swagger UI seja acessível conforme as necessidades do projeto. Isso resulta em uma API mais robusta e bem documentada, facilitando o desenvolvimento e consumo.

Comentários


Mais artigos

Cover Image for Monitoramento de Aplicações em Tempo Real com Grafana e Prometheus

Monitoramento de Aplicações em Tempo Real com Grafana e Prometheus

O artigo aborda a importância do monitoramento de aplicações web em tempo real e apresenta uma solução utilizando Grafana e Prometheus. Ele começa com uma introdução dessas duas ferramentas, seguida por instruções para instalação e configuração inicial. O foco principal está em como criar dashboards eficientes no Grafana, destacando métricas importantes como latência, throughput, taxa de erro e utilização de recursos. Além disso, o artigo explora como configurar alertas em Grafana para métricas que ultrapassam um determinado limite. O objetivo é fornecer um guia abrangente para monitorar o desempenho de aplicações web usando Grafana e Prometheus.

Renan Ribeiro Lage
Renan Ribeiro Lage
Cover Image for Usando Loki e Promtail para enviar logs para o Grafana

Usando Loki e Promtail para enviar logs para o Grafana

O artigo aborda como usar Loki e Promtail para enviar logs para uma plataforma Grafana. Loki é um sistema de agregação de logs, e Promtail é um agente que coleta e envia esses logs para Loki. Após uma breve introdução sobre cada componente, o artigo orienta sobre como instalar e configurar essas ferramentas. Ele também explica como criar um painel no Grafana para visualizar os logs coletados. A combinação dessas tecnologias oferece uma solução de monitoramento robusta, eficiente e altamente escalável, ideal para ambientes de microsserviços, aplicações em cloud e outros sistemas onde a observabilidade é crítica.

Renan Ribeiro Lage
Renan Ribeiro Lage