API REST desenvolvida em Rust com Axum, SQLx e PostgreSQL (Supabase), demonstrando operações CRUD com busca, ordenação e paginação.
- Rust - Linguagem de programação
- Axum - Framework web assíncrono
- SQLx - Cliente SQL assíncrono com verificação em tempo de compilação
- PostgreSQL - Banco de dados (Supabase)
- Utoipa - Documentação OpenAPI/Swagger automática
- Tower HTTP - Middleware CORS
- ✅ CRUD completo de itens (Create, Read, Update, Delete)
- ✅ Busca por ID ou nome do produto
- ✅ Ordenação por ID, nome ou preço (ascendente/descendente)
- ✅ Paginação com controle de itens por página
- ✅ Documentação Swagger UI interativa
- ✅ CORS habilitado para integração com frontends
- Clone o repositório:
git clone git@github.com:rogeriobiondi/rust-api-sample.git
cd rust-api-sample- Configure as variáveis de ambiente:
cp .env.example .env- Edite o arquivo
.envcom suas credenciais do banco:
DATABASE_URL=postgresql://postgres:SUA_SENHA@db.SEU_PROJETO.supabase.co:5432/postgres
-
Crie a tabela no banco de dados executando o SQL em
sql/itens.sql -
(Opcional) Popule com dados de teste executando
sql/seed.sql
cargo runA API estará disponível em http://localhost:3000
cargo run --releasecargo buildBinário gerado em: target/debug/rust-api-sample
cargo build --releaseBinário gerado em: target/release/rust-api-sample
| Método | Endpoint | Descrição |
|---|---|---|
| GET | / |
Mensagem de boas-vindas |
| GET | /itens |
Lista itens com busca, ordenação e paginação |
| GET | /itens/{id} |
Busca item por ID |
| POST | /itens |
Cria novo item |
| PUT | /itens/{id} |
Atualiza item existente |
| DELETE | /itens/{id} |
Remove item |
| Parâmetro | Tipo | Descrição |
|---|---|---|
busca |
string | Busca por ID ou nome (case-insensitive) |
ordenar_por |
string | Campo: id, nome ou preco |
ordem |
string | Direção: asc ou desc |
pagina |
number | Número da página (começa em 1) |
por_pagina |
number | Itens por página (padrão: 10, máx: 100) |
curl "http://localhost:3000/itens?busca=notebook&ordenar_por=preco&ordem=desc&pagina=1&por_pagina=5"{
"itens": [
{ "id": 1, "nome": "Notebook Dell", "preco": 3499.90 }
],
"total": 1,
"pagina": 1,
"por_pagina": 5,
"total_paginas": 1
}Acesse a documentação interativa em:
http://localhost:3000/swagger-ui/
rust-api-sample/
├── Cargo.toml # Dependências e configuração
├── .env.example # Template de variáveis de ambiente
├── .gitignore # Arquivos ignorados pelo Git
├── sql/
│ ├── itens.sql # Script de criação da tabela
│ └── seed.sql # Dados de teste (30 produtos)
└── src/
├── main.rs # Código principal da API
└── swagger-ui.html # Template do Swagger UI
MIT