Este é um playground completo que demonstra todas as funcionalidades do Echo framework, um framework Go de alta performance, extensível e minimalista.
- Go 1.21 ou superior
- Git
# Clonar o repositório
git clone <repository-url>
cd echo-playground
# Instalar dependências
go mod tidy
# Executar o servidor
go run main.goO servidor estará disponível em: http://localhost:8080
http://localhost:8080/api/v1
Retorna informações sobre o framework e suas funcionalidades.
Resposta:
{
"success": true,
"message": "Bem-vindo ao Echo Playground!",
"data": {
"framework": "Echo",
"version": "v4",
"features": [
"High Performance Router",
"Scalable REST APIs",
"Automatic TLS",
"HTTP/2 Support",
"Middleware System",
"Data Binding",
"Data Rendering",
"Template Support",
"Extensible Architecture"
]
}
}Retorna uma saudação personalizada.
Parâmetros:
name(path): Nome da pessoa
Exemplo:
curl http://localhost:8080/api/v1/hello/JoãoResposta:
Olá, João! Bem-vindo ao Echo!
Renderiza uma página HTML usando templates.
Resposta: Página HTML com design moderno
Retorna dados em formato XML.
Resposta:
<User>
<ID>1</ID>
<Name>João Silva</Name>
<Email>joao@exemplo.com</Email>
<Age>30</Age>
<Created>2024-01-15T10:30:00Z</Created>
</User>Cria um novo usuário com data binding automático.
Corpo da requisição:
{
"name": "Maria Silva",
"email": "maria@exemplo.com",
"age": 25
}Resposta:
{
"success": true,
"message": "Usuário criado com sucesso",
"data": {
"id": 123,
"name": "Maria Silva",
"email": "maria@exemplo.com",
"age": 25,
"created": "2024-01-15T10:30:00Z"
}
}Demonstra o uso de query parameters.
Parâmetros:
q(query): Termo de buscalimit(query): Limite de resultados
Exemplo:
curl "http://localhost:8080/api/v1/search?q=laptop&limit=10"Resposta:
{
"success": true,
"message": "Busca realizada",
"data": {
"query": "laptop",
"limit": "10",
"results": ["resultado 1", "resultado 2", "resultado 3"]
}
}Faz upload de um arquivo.
Corpo da requisição: multipart/form-data
file: Arquivo a ser enviado
Exemplo:
curl -X POST -F "file=@documento.pdf" http://localhost:8080/api/v1/uploadResposta:
{
"success": true,
"message": "Arquivo enviado com sucesso",
"data": {
"filename": "documento.pdf",
"size": 1024000
}
}Faz download de um arquivo.
Parâmetros:
filename(path): Nome do arquivo
Exemplo:
curl -O http://localhost:8080/api/v1/download/documento.pdfEndpoint protegido que requer autenticação.
Headers:
Authorization: Bearer valid-token
Exemplo:
curl -H "Authorization: Bearer valid-token" http://localhost:8080/api/v1/protected/profileResposta:
{
"success": true,
"message": "Perfil do usuário autenticado",
"data": {
"id": 1,
"name": "Usuário Autenticado",
"email": "user@exemplo.com",
"age": 25,
"created": "2024-01-15T10:30:00Z"
}
}Lista todos os produtos.
Resposta:
{
"success": true,
"message": "Produtos listados com sucesso",
"data": [
{
"id": 1,
"name": "Laptop",
"price": 2999.99,
"description": "Laptop de alta performance",
"category": "Eletrônicos"
},
{
"id": 2,
"name": "Mouse",
"price": 89.99,
"description": "Mouse sem fio",
"category": "Acessórios"
}
]
}Obtém um produto específico.
Parâmetros:
id(path): ID do produto
Cria um novo produto.
Corpo da requisição:
{
"name": "Teclado Mecânico",
"price": 299.99,
"description": "Teclado mecânico RGB",
"category": "Acessórios"
}Atualiza um produto existente.
Parâmetros:
id(path): ID do produto
Remove um produto.
Parâmetros:
id(path): ID do produto
Demonstra streaming de dados em tempo real.
Exemplo:
curl http://localhost:8080/api/v1/streamResposta: Dados enviados em chunks a cada 500ms
Endpoint preparado para WebSocket.
Resposta:
{
"success": true,
"message": "Endpoint WebSocket (implementação completa requer upgrade)",
"data": {
"protocol": "WebSocket",
"status": "Ready for upgrade"
}
}- Roteamento de alta performance sem alocação dinâmica de memória
- Priorização inteligente de rotas
- Suporte a parâmetros de path e query
- Middleware global (Logger, Recover, CORS)
- Middleware customizado para logging
- Middleware de autenticação JWT
- Aplicação de middleware em grupos de rotas
- Binding automático de JSON
- Binding de XML
- Binding de form-data
- Validação customizada
- Respostas JSON
- Respostas XML
- Respostas HTML (templates)
- Respostas de texto simples
- Streaming de dados
- Upload/Download de arquivos
- Renderização de templates HTML
- Template engine customizável
- Design responsivo e moderno
- Tratamento de erros centralizado
- Validador customizado
- API extensível
- Middleware customizado
- Middleware CORS
- Autenticação JWT
- Preparado para TLS automático
- Suporte a HTTP/2
# Informações gerais
curl http://localhost:8080/api/v1/
# Criar usuário
curl -X POST -H "Content-Type: application/json" \
-d '{"name":"João","email":"joao@exemplo.com","age":30}' \
http://localhost:8080/api/v1/users
# Listar produtos
curl http://localhost:8080/api/v1/products
# Upload de arquivo
curl -X POST -F "file=@teste.txt" \
http://localhost:8080/api/v1/upload
# Endpoint protegido
curl -H "Authorization: Bearer valid-token" \
http://localhost:8080/api/v1/protected/profile// Criar usuário
fetch('http://localhost:8080/api/v1/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Maria',
email: 'maria@exemplo.com',
age: 25
})
})
.then(response => response.json())
.then(data => console.log(data));
// Listar produtos
fetch('http://localhost:8080/api/v1/products')
.then(response => response.json())
.then(data => console.log(data));Para expandir este playground, você pode:
- Implementar banco de dados real (PostgreSQL, MongoDB)
- Adicionar mais validações com bibliotecas como
go-playground/validator - Implementar WebSocket real para comunicação em tempo real
- Configurar TLS automático com Let's Encrypt
- Adicionar testes unitários e de integração
- Implementar rate limiting e outras medidas de segurança
- Adicionar documentação Swagger/OpenAPI
Este projeto é um playground educacional para demonstrar as funcionalidades do Echo framework.