Esse projeto consiste em uma API REST para o gerenciamento de uma livraria, desenvolvida como parte do curso de APIs com Node.js com Express e MongoDB da Alura. A API permite realizar operações de CRUD (Create, Read, Update, Delete) em livros e autores.
- Node.js: Ambiente de execução JavaScript.
- Express: Framework para Node.js, utilizado para o roteamento e gerenciamento de requisições.
- MongoDB: Banco de dados NoSQL para o armazenamento dos dados.
- Mongoose: Biblioteca para modelagem de objetos MongoDB, simplificando as interações com o banco de dados.
A API oferece os seguintes endpoints para interação:
GET /livros: Lista todos os livros cadastrados.GET /livros/busca: Filtra livros porquery parameterscomo título, editora, autor, e faixas de preço e páginas.GET /livros/:id: Retorna um livro específico pelo seu ID.POST /livros: Adiciona um novo livro ao catálogo.PUT /livros/:id: Atualiza as informações de um livro existente.DELETE /livros/:id: Remove um livro do catálogo.
GET /autores: Lista todos os autores cadastrados.GET /autores/:id: Retorna um autor específico pelo seu ID.POST /autores: Adiciona um novo autor.PUT /autores/:id: Atualiza as informações de um autor existente.DELETE /autores/:id: Remove um autor.
Esse projeto me ajudou muito no entendimento e desenvolvimento de APIs REST. Vou listar aqui o que pra mim foram os topicos principais desse projeto:
- Arquitetura RESTful: Compreensão dos princípios de roteamento, métodos HTTP (GET, POST, PUT, DELETE) e a estrutura de URLs para criação de endpoints para cada metodo.
- Manejo de Erros: Implementação de um middleware de tratamento de erros para capturar e responder a erros nativos do Node e erros do Mongoose.
- Modelagem de Dados: Utilização do Mongoose pra criar os schemas e modelos para Livros e Autores da livraria, constrindo tambem a logica da relacao entre esses modelos.
- Consultas Avançadas: Consultas dinâmicas utilizando
querypara filtragem (por título, autor, etc.), paginação e ordenação de resultados (essa parte foi muito interessante, tomei a liberdade de criar algumas regras do meu agrado). - Middleware: Utilização de middlewares do Express para processar as requisições, tanto na hora de fazer o tratamentode erros como tambem na etapa de paginacao das solicitacoes (tambem uma das partes mais interessantes de configurar).
- Assincronismo e Promises: Uso de
async/awaitpara lidar com operações de banco de dados.