API NoSQL desenvolvida com MongoDB para gestão de livros, autores e avaliações de utilizadores.
- Criar autores e livros - Endpoints para criação de autores e livros
- Listar todos os livros com nome do autor incluído - Join entre coleções usando aggregation
- Adicionar avaliação a um livro - Sistema de avaliações com pontuação de 1-5
- Listar livros com média de pontuação ordenados - Ranking de livros por avaliação
- Pesquisar livros por género, ano ou palavra-chave - Sistema de pesquisa avançada
- Remover livro ou autor (com validação de dependências) - Validação de integridade referencial
- Node.js - Runtime JavaScript
- Express.js - Framework web
- MongoDB - Base de dados NoSQL
- MongoDB Driver - Cliente oficial MongoDB para Node.js
gestor-livros-avaliacoes/
├── config/
│ └── database.js # Configuração da conexão MongoDB
├── models/
│ ├── Author.js # Model para autores
│ ├── Book.js # Model para livros
│ └── Review.js # Model para avaliações
├── routes/
│ ├── authors.js # Rotas para autores
│ ├── books.js # Rotas para livros
│ └── reviews.js # Rotas para avaliações
├── .env # Variáveis de ambiente
├── package.json # Dependências e scripts
├── server.js # Servidor principal
└── README.md # Documentação
- Node.js (versão 14 ou superior)
- MongoDB (local ou MongoDB Atlas)
- npm ou yarn
- Instalar dependências:
npm install- Configurar variáveis de ambiente:
Edite o arquivo
.envcom suas configurações:
MONGODB_URI=mongodb://localhost:27017/gestor_livros
PORT=3000
- Iniciar o servidor:
# Modo desenvolvimento
npm run dev
# Modo produção
npm start- Aceder à API:
- URL base:
http://localhost:3000 - Documentação:
http://localhost:3000(mostra endpoints disponíveis)
POST /api/autores- Criar autorGET /api/autores- Listar todos os autoresGET /api/autores/:id- Buscar autor por IDPUT /api/autores/:id- Atualizar autorDELETE /api/autores/:id- Remover autor (valida dependências)
POST /api/livros- Criar livroGET /api/livros- Listar todos os livros (com nome do autor)GET /api/livros/rankings- Listar livros ordenados por avaliaçãoGET /api/livros/search- Pesquisar livros (por género, ano, palavra-chave)GET /api/livros/:id- Buscar livro por IDPUT /api/livros/:id- Atualizar livroDELETE /api/livros/:id- Remover livro (remove avaliações associadas)
POST /api/avaliacoes- Criar avaliaçãoGET /api/avaliacoes- Listar todas as avaliaçõesGET /api/avaliacoes/livro/:livroId- Avaliações de um livro específicoGET /api/avaliacoes/livro/:livroId/estatisticas- Estatísticas de um livroGET /api/avaliacoes/:id- Buscar avaliação por IDPUT /api/avaliacoes/:id- Atualizar avaliaçãoDELETE /api/avaliacoes/:id- Remover avaliação
POST /api/autores
{
"nome": "José Saramago",
"nacionalidade": "Português",
"anoNascimento": 1922,
"biografia": "Escritor português, Prémio Nobel da Literatura"
}POST /api/livros
{
"titulo": "Ensaio sobre a Cegueira",
"autorId": "ObjectId_do_autor",
"genero": "Ficção",
"anoPublicacao": 1995,
"isbn": "978-0151002511",
"resumo": "Romance sobre uma epidemia de cegueira",
"palavrasChave": ["ficção", "sociedade", "cegueira"]
}POST /api/avaliacoes
{
"livroId": "ObjectId_do_livro",
"nomeUtilizador": "João Silva",
"pontuacao": 5,
"comentario": "Livro extraordinário, muito recomendado!"
}GET /api/livros/search?genero=Ficção&ano=1995&palavraChave=cegueira
- Modelagem sem esquemas fixos - Documentos flexíveis
- Consultas CRUD - Create, Read, Update, Delete
- Relações entre coleções - Referencias entre autores, livros e avaliações
- Operações de agregação - Joins, grouping, sorting para relatórios complexos
- Validação de integridade - Verificação de dependências antes de remoções
Aceda a /api/status para verificar o estado da API.