Todos os três microserviços do projeto (election-management, voting-app e result-app) foram configurados com Swagger UI para documentação automática das APIs utilizando a extensão SmallRye OpenAPI do Quarkus.
election-management (já possuía):
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>voting-app (adicionado):
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>result-app (adicionado):
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>Em cada application.properties dos três módulos:
election-management:
# SWAGGER/OPENAPI
quarkus.swagger-ui.always-include=true
quarkus.swagger-ui.path=/q/swagger-ui
mp.openapi.extensions.smallrye.info.title=Election Management API
mp.openapi.extensions.smallrye.info.version=1.0.0
mp.openapi.extensions.smallrye.info.description=API para gerenciamento de eleições
mp.openapi.extensions.smallrye.info.contact.name=Jaques Projetos
mp.openapi.extensions.smallrye.info.contact.email=contato@jaquesprojetos.com.brvoting-app:
# SWAGGER/OPENAPI
quarkus.swagger-ui.always-include=true
quarkus.swagger-ui.path=/q/swagger-ui
mp.openapi.extensions.smallrye.info.title=Voting App API
mp.openapi.extensions.smallrye.info.version=1.0.0
mp.openapi.extensions.smallrye.info.description=API para votação com suporte a virtual threads
mp.openapi.extensions.smallrye.info.contact.name=Jaques Projetos
mp.openapi.extensions.smallrye.info.contact.email=contato@jaquesprojetos.com.brresult-app:
# SWAGGER/OPENAPI
quarkus.swagger-ui.always-include=true
quarkus.swagger-ui.path=/q/swagger-ui
mp.openapi.extensions.smallrye.info.title=Result App API
mp.openapi.extensions.smallrye.info.version=1.0.0
mp.openapi.extensions.smallrye.info.description=API para consulta de resultados das eleições
mp.openapi.extensions.smallrye.info.contact.name=Jaques Projetos
mp.openapi.extensions.smallrye.info.contact.email=contato@jaquesprojetos.com.br- Serviços de infraestrutura rodando (MariaDB e Redis):
cd /home/leonardojaques/Projetos/lab-java-quarkus
docker compose -f config/docker-compose.yml up -d database caching- Inicie a aplicação:
cd /home/leonardojaques/Projetos/lab-java-quarkus/election-management
./mvnw quarkus:dev-
Aguarde a mensagem indicando que a aplicação está rodando
-
Acesse no navegador:
- Swagger UI: http://localhost:8080/q/swagger-ui
- OpenAPI Spec (JSON): http://localhost:8080/q/openapi
- OpenAPI Spec (YAML): http://localhost:8080/q/openapi?format=yaml
- Inicie a aplicação:
cd /home/leonardojaques/Projetos/lab-java-quarkus/voting-app
./mvnw quarkus:dev- Acesse no navegador:
- Swagger UI: http://localhost:8081/q/swagger-ui
- OpenAPI Spec: http://localhost:8081/q/openapi
- Inicie a aplicação:
cd /home/leonardojaques/Projetos/lab-java-quarkus/result-app
./mvnw quarkus:dev- Acesse no navegador:
- Swagger UI: http://localhost:8082/q/swagger-ui
- OpenAPI Spec: http://localhost:8082/q/openapi
- Porta 8080: http://localhost:8080/q/swagger-ui (Election Management)
- Porta 8081: http://localhost:8081/q/swagger-ui (Voting App)
- Porta 8082: http://localhost:8082/q/swagger-ui (Result App)
- Porta 8080: http://localhost:8080/q/openapi (Election Management)
- Porta 8081: http://localhost:8081/q/openapi (Voting App)
- Porta 8082: http://localhost:8082/q/openapi (Result App)
O Swagger UI permite:
- ✅ Visualizar todos os endpoints disponíveis
- ✅ Ver os modelos de dados (schemas)
- ✅ Testar as APIs diretamente pelo navegador
- ✅ Ver exemplos de requisições e respostas
- ✅ Validar payloads
- ✅ Exportar especificação OpenAPI
# JSON (padrão)
curl http://localhost:8080/q/openapi
# YAML
curl http://localhost:8080/q/openapi?format=yamlApós verificar os endpoints disponíveis no Swagger UI, você pode testá-los via curl:
# Exemplo: Listar candidatos (election-management)
curl http://localhost:8080/api/candidates
# Exemplo: Health check
curl http://localhost:8080/q/healthPara verificar se o Swagger foi corretamente instalado:
- Verificar dependência no pom.xml:
grep -n "quarkus-smallrye-openapi" election-management/pom.xml
grep -n "quarkus-smallrye-openapi" voting-app/pom.xml
grep -n "quarkus-smallrye-openapi" result-app/pom.xml- Verificar configuração:
grep -n "swagger-ui" election-management/src/main/resources/application.properties
grep -n "swagger-ui" voting-app/src/main/resources/application.properties
grep -n "swagger-ui" result-app/src/main/resources/application.properties⚠️ O Swagger UI está sempre habilitado devido à configuraçãoquarkus.swagger-ui.always-include=true- 📝 A especificação OpenAPI é gerada automaticamente a partir das anotações JAX-RS nos endpoints
- 🔄 Em modo dev (
./mvnw quarkus:dev), as alterações são refletidas automaticamente - 🌐 Em produção, considere adicionar autenticação ao Swagger UI por questões de segurança
- Verifique se a aplicação está rodando:
curl http://localhost:808X/q/health-
Verifique os logs da aplicação
-
Confirme que a dependência
quarkus-smallrye-openapiestá no pom.xml
- Verifique se os endpoints possuem anotações JAX-RS (
@Path,@GET,@POST, etc.) - Confirme que as classes estão sendo escaneadas pelo Quarkus
- Reinicie a aplicação em modo dev