Intermediário1-2 semanas
API REST com Autenticação
Uma API de notas com cadastro, login e rotas protegidas — o CRUD completo em Node/Express, com banco, validação e testes.
backendapiautenticacaobanco-de-dadostestes
// pratica as trilhas
// criado por
fonte
O projeto onde tudo o que a trilha de backend ensinou vira uma API de verdade: um serviço de notas onde cada usuário cria, lê, edita e apaga só as suas — com login, senha protegida e rotas que ninguém acessa sem estar autenticado.
Objetivo
Praticar o ciclo completo de uma API REST: modelar recursos, expor um CRUD com os verbos e status HTTP certos, persistir em banco, validar entrada e proteger rotas com autenticação — do jeito que um backend real é construído.
Requisitos
-
POST /registrarePOST /login(senha guardada com hash, nunca em texto puro) - Autenticação por token (JWT ou sessão) nas rotas protegidas
- CRUD de notas:
GET /notas,POST /notas,GET /notas/:id,PUT /notas/:id,DELETE /notas/:id - Cada usuário só enxerga e altera as próprias notas
- Validação de entrada (título obrigatório, tamanho máximo, etc.) com erro claro
- Status HTTP corretos: 201 ao criar, 401 sem token, 403 sem permissão, 404 quando não existe
- Persistência em banco (SQLite/Postgres) — nada de array em memória
Desafios extras
- Testes automatizados dos fluxos principais (registrar → login → criar → listar)
- Paginação e busca por texto em
GET /notas - Refresh token e/ou expiração do token de acesso
- Rate limiting no login pra dificultar força bruta
- Documente a API (um
READMEcom as rotas ou um OpenAPI)
Dicas
- Modele o dado antes do endpoint:
usuariosenotas, com a nota apontando pro dono (usuario_id). O "só as suas notas" cai naturalmente do filtro por dono. - Nunca guarde senha em texto puro. Use uma função de hash própria pra senhas (bcrypt/argon2), não um hash genérico.
- O token diz quem é a pessoa; a autorização (o que ela pode fazer) é checada em cada rota. São coisas diferentes — não confunda autenticar com autorizar.
- Teste os caminhos de erro, não só o feliz: token faltando, id de outro usuário, corpo inválido. É onde as APIs de verdade quebram.
// avaliação do projeto
—
ainda sem avaliações