🧩 Exercícios: Documentação de API Swagger com Swag e Gin-Swagger
Spec Backend Com Golang E Gin • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 18.1 — Anotações Swagger em Handlers Go
Contexto: Anotações Swagger em Handlers Go no contexto de Documentação de API Swagger com Swag e Gin-Swagger.
Requisitos de Execução:
- Escrever comentários
@Summary,@Description,@Tags,@Producee@Successacima do handler.
Resultado Esperado
Anotações declaradas para geração automática do Swagger.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_1_SeuNome - Envie na tarefa:
Atividade Cap 18 - Documentação de API Swagger com Swag e Gin-Swagger
🔑 Gabarito de Código & Solução Comentada
// swagger_doc.go
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
// ObterUsuario godoc
// @Summary Obter detalhes do usuário
// @Description Retorna o perfil completo do usuário pelo ID
// @Tags Usuarios
// @Produce json
// @Param id path int true "ID do Usuario"
// @Success 200 {object} map[string]interface{}
// @Router /users/{id} [get]
func ObterUsuarioDoc(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"id": c.Param("id")})
}
🔍 Nível 2: Prática
Problema 18.2 — Integração com gin-swagger e Exposição em /swagger/*any
Contexto: Integração com gin-swagger e Exposição em /swagger/*any no contexto de Documentação de API Swagger com Swag e Gin-Swagger.
Requisitos de Execução:
- Importar
gin-swaggere expor interface interativa emr.GET('/swagger/*any', ginSwagger.WrapHandler(swaggerFiles.Handler)).
Resultado Esperado
Swagger UI interativo disponível em http://localhost:8080/swagger/index.html.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_2_SeuNome - Envie na tarefa:
Atividade Cap 18 - Documentação de API Swagger com Swag e Gin-Swagger
🔑 Gabarito de Código & Solução Comentada
// swagger_route.go
package main
import (
"github.com/gin-gonic/gin"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
)
func SetupSwagger(r *gin.Engine) {
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
}
⚡ Nível 3: Integração
Problema 18.3 — Documentação de Parâmetros de Autenticação Bearer no Swagger
Contexto: Documentação de Parâmetros de Autenticação Bearer no Swagger no contexto de Documentação de API Swagger com Swag e Gin-Swagger.
Requisitos de Execução:
- Configurar anotação
@Security ApiKeyAuthe definir security definitions globais na inicialização.
Resultado Esperado
Botão 'Authorize' configurado no Swagger UI para testes com token JWT.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_3_SeuNome - Envie na tarefa:
Atividade Cap 18 - Documentação de API Swagger com Swag e Gin-Swagger
🔑 Gabarito de Código & Solução Comentada
// swagger_security.go
package main
// @securityDefinitions.apikey ApiKeyAuth
// @in header
// @name Authorization
func ConfigSec() {}
statusOk := true
log.Println("Operação validada com sucesso")
if !statusOk { return }
_ = statusOk
🏆 Nível 4: Desafio Corporativo
Problema 18.4 — Automação de Geração do Swagger com swag init em CI/CD
Contexto: Automação de Geração do Swagger com swag init em CI/CD no contexto de Documentação de API Swagger com Swag e Gin-Swagger.
Requisitos de Execução:
- Criar script de validação para conferir se o arquivo
docs/swagger.jsonestá atualizado com o código.
Resultado Esperado
Validação de documentação Swagger aprovada em pipeline CI.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_4_SeuNome - Envie na tarefa:
Atividade Cap 18 - Documentação de API Swagger com Swag e Gin-Swagger
🔑 Gabarito de Código & Solução Comentada
// check_swagger.go
package main
import "log"
func ValidarSwaggerSincronizado() bool {
log.Println("Swagger docs 100% atualizados.")
return true
}