Este projeto implementa uma API REST que realiza operações CRUD (Criar, Ler, Atualizar, Deletar) em arquivos JSON usando o módulo fs do Node.js. O projeto demonstra como manter dados persistidos em arquivos no sistema de arquivos local, sendo uma alternativa mais simples antes de avançar para bancos de dados reais.
- Node.js instalado (versão 12.x ou superior)
- Clone o repositório
- Navegue até a pasta do projeto:
cd app05 - Instale as dependências:
npm install
- Para iniciar o servidor normalmente:
npm start - Para iniciar o servidor com recarga automática (desenvolvimento):
npm run dev
O servidor estará rodando em http://localhost:3000
| Método | Rota | Descrição |
|---|---|---|
| GET | /api/livros | Obter todos os livros |
| GET | /api/livros/:id | Obter um livro específico pelo ID |
| GET | /api/livros/busca/termo?q=termo | Buscar livros por termo |
| POST | /api/livros | Adicionar um novo livro |
| PUT | /api/livros/:id | Atualizar um livro existente |
| DELETE | /api/livros/:id | Remover um livro |
GET /api/livros
POST /api/livros
Content-Type: application/json
{
"titulo": "O Hobbit",
"autor": "J.R.R. Tolkien",
"ano": 1937,
"genero": "Fantasia",
"paginas": 310
}
PUT /api/livros/1
Content-Type: application/json
{
"paginas": 320,
"genero": "Fantasia Épica"
}
GET /api/livros/busca/termo?q=Tolkien
- Leitura e escrita de arquivos com o módulo
fsdo Node.js - Manipulação de arquivos JSON para persistência de dados
- Operações CRUD completas
- Tratamento de erros na manipulação de arquivos
- Promessas (Promises) para operações assíncronas
- Estruturação de código em modelos e rotas
- Validação básica de dados
- Implementação de busca em dados persistidos
app.js: Arquivo principal do servidor Expressmodels/livroModel.js: Modelo para manipulação do arquivo JSON de livrosroutes/livroRoutes.js: Rotas da API para gerenciamento de livrosdata/livros.json: Arquivo JSON que armazena os dados dos livrospackage.json: Metadados e dependências do projeto
- Simplicidade de implementação
- Não requer configuração de banco de dados
- Fácil para visualizar e editar manualmente
- Excelente para aplicações de pequeno porte
- Útil como transição antes de adotar um banco de dados
- Não é adequado para dados muito grandes
- Sem suporte para consultas complexas
- Problemas de concorrência em ambientes multi-usuário
- Desempenho limitado em operações frequentes
Para evoluir seus conhecimentos após este projeto, considere:
- Implementar controle de concorrência nas operações de arquivo
- Adicionar cache para melhorar o desempenho
- Criar backups automáticos dos arquivos JSON
- Migrar para um banco de dados real (SQLite, PostgreSQL, MongoDB)
- Implementar autenticação para proteger os dados
- Adicionar testes unitários e de integração