API RESTful desenvolvida com Node.js, Express e MongoDB/Mongoose para gerenciamento de um catálogo de livros e autores.
| Tecnologia | Versão | Finalidade |
|---|---|---|
| Node.js | LTS | Runtime JavaScript |
| Express.js | ^4.x | Framework web |
| MongoDB | — | Banco de dados NoSQL |
| Mongoose | ^7.x | ODM para MongoDB |
| Nodemon | — | Hot reload em desenvolvimento |
| Dotenv | — | Variáveis de ambiente |
NodeJs_Api/
├── server.js # Ponto de entrada da aplicação
├── package.json
└── src/
├── app.js # Configuração do Express
├── config/
│ └── dbConnect.js # Conexão com o MongoDB
├── controllers/
│ ├── livrosController.js
│ └── autoresController.js
├── models/
│ ├── Livro.js
│ └── Autor.js
├── routes/
│ ├── index.js
│ ├── livrosRoutes.js
│ └── autoresRoutes.js
├── middlewares/
│ ├── manipulador404.js
│ ├── manipuladorDeErros.js
│ └── paginas.js
└── Erros/
├── erroBase.js
├── erroValidacao.js
├── naoEncontrado.js
└── RequisicaoIncorreta.js
git clone https://github.com/cleversonNobrega/NodeJs_Api.git
cd NodeJs_Apinpm installCrie um arquivo .env na raiz do projeto com o seguinte conteúdo:
PORT=3000
DB_CONNECTION_STRING=mongodb://localhost:27017/nome_do_banco💡 Substitua
mongodb://localhost:27017/nome_do_bancopela sua string de conexão do MongoDB.
Modo desenvolvimento (com hot reload):
npm run devModo produção:
node server.jsO servidor estará disponível em: http://localhost:3000
| Método | Rota | Descrição |
|---|---|---|
| GET | / |
Retorna informações básicas da API |
| Método | Rota | Descrição |
|---|---|---|
| GET | /livros |
Lista todos os livros (paginado) |
| GET | /livros/busca |
Busca livros por filtros (paginado) |
| GET | /livros/:id |
Retorna um livro pelo ID |
| POST | /livros |
Cadastra um novo livro |
| PUT | /livros/:id |
Atualiza um livro pelo ID |
| DELETE | /livros/:id |
Remove um livro pelo ID |
{
"titulo": "Node.js: Do Zero à Produção",
"autor": "64b1f2c3d4e5f6a7b8c9d0e1",
"editora": "Casa do código",
"numeroPaginas": 320
}
⚠️ Editoras aceitas:"Casa do código"ou"Alura"
⚠️ Número de páginas: deve estar entre10e5000
| Método | Rota | Descrição |
|---|---|---|
| GET | /autores |
Lista todos os autores (paginado) |
| GET | /autores/:id |
Retorna um autor pelo ID |
| POST | /autores |
Cadastra um novo autor |
| PUT | /autores/:id |
Atualiza um autor pelo ID |
| DELETE | /autores/:id |
Remove um autor pelo ID |
{
"nome": "Fulano de Tal",
"nacionalidade": "Brasileira"
}| Campo | Tipo | Obrigatório | Restrições |
|---|---|---|---|
titulo |
String | ✅ | — |
autor |
ObjectId (ref: autores) | ✅ | — |
editora |
String | ✅ | "Casa do código" ou "Alura" |
numeroPaginas |
Number | ❌ | Entre 10 e 5000 |
| Campo | Tipo | Obrigatório |
|---|---|---|
nome |
String | ✅ |
nacionalidade |
String | ❌ |
A API conta com middlewares globais para tratamento de erros:
- 404 Not Found — para rotas não existentes
- Erros de Validação — campos inválidos ou ausentes retornam mensagens descritivas
- Erros Genéricos — capturados e formatados de forma padronizada