Este projeto é um estudo sobre fundamentos do Node.js: criação de um servidor HTTP puro, roteamento manual, leitura e escrita em arquivos para persistência simples, middlewares básicos e extração de parâmetros de rota e query string.
- Uso do módulo
httpdo Node.js para criar um servidor sem frameworks. - Definição de rotas como objetos (
method,path,handler) e uso de expressões regulares para rotas dinâmicas. - Implementação de um middleware
jsonpara ler e parsear o corpo da requisição. - Manipulação de um banco de dados simples em arquivo (
src/db.json) através da classeDatabase(métodos: select, insert, update, delete). - Extração e parsing de query string (
utils/extract-query-params.js). - Construção dinâmica de regex para rotas com parâmetros (
utils/build-route-path.js).
Requisitos: Node.js v20+
- Instale dependências (se houver). Neste projeto não existem dependências externas.
- Execute em modo de desenvolvimento (watch):
npm run devO servidor ficará escutando em http://localhost:3333.
-
GET /users
- Query option:
?search=texto— faz filtro simples pornameouemail.
- Query option:
-
POST /users
- Body JSON:
{ "name": "Nome", "email": "email@exemplo.com" } - Cria um usuário e salva em
src/db.json.
- Body JSON:
-
PUT /users/:id
- Body JSON:
{ "name": "Novo Nome", "email": "novo@exemplo.com" } - Atualiza o usuário com o id informado.
- Body JSON:
-
DELETE /users/:id
- Remove o usuário com o id informado.
- Como funciona o roteamento básico sem frameworks: capturar
methodeurl, construir expressões regulares para rotas dinâmicas e chamar handlers. - Como ler o corpo da requisição manualmente e como tratar erros de JSON inválido.
- Como persistir dados em arquivo usando
fs/promisese por que é importante tratar operações assíncronas no startup (carregar db antes de aceitar requisições). - Como lidar com query strings e como separar
pathnamedequerypara evitar problemas de matching com regex. - Limitações de trabalhar com regex (grupos nomeados duplicados) e estratégias para normalizar parâmetros.
Ao completar este projeto, eu desenvolvi as seguintes habilidades:
- Conhecimento prático do módulo
httpdo Node.js. - Habilidade de criar middlewares simples e manipular o fluxo de requisição/resposta.
- Competência em manipulação de arquivos e persistência simples com
fs/promises. - Raciocínio para construir e debugar expressões regulares aplicadas ao roteamento.
- Boas práticas: validação de entrada, tratamento de erros, e pensar sobre estado assíncrono (carregamento de DB).
Projeto criado como estudo dos fundamentos do Node.js.