8.1 KiB
Nome do microsserviço: Reviews e avaliações
Integrantes
Kate
Descrição do Microsserviço:
O microsserviço de Reviews e Avaliações é responsável por gerenciar todas as avaliações feitas pelos usuários sobre os jogos disponíveis na plataforma GameVerse. Ele permite que usuários registrem notas e comentários, podendo também editar e excluir comentários sobre jogos que estão na biblioteca.
Responsabilidades do Microsserviço:
- Receber e armazenar avaliações (nota+comentários) feitas por usuários dos jogos
- Garantir que cada usuário avalie o jogo apenas uma vez
- Fornecer dados da avaliação para o Laravel Central e para os microsserviços de jogos
- Garantir que o usuário que vai avaliar esteja logado no sistema (Gameverse)
Tecnologias Utilizadas:
- NodeJS + Express
- PostgreSQL
Requisitos Necessários Para Rodar o Projeto:
- NodeJS 20 ou mais recente
- PostgreSQL 14 ou mais recente
Passo a Passo da Instalação
- Clone o projeto
- Execute o comando
npm installna raiz do projeto
Configuração do .env
Em construção. Parâmetros a serem definidos de acordo com a implementação do projeto
Como Executar o Projeto
- Execute o comando
npm startna raiz do projeto
Como Testar o Projeto
- Execute o comando
npm testna raiz do projeto
Rotas da API
| Metodo | Rota | Descrição | | ------ | ------------------------------------ | -------------------------------------- -- | | GET | /api/v1/reviews | Lista reviews de acordo com o filtro | | GET | /api/v1/reviews/jogo/{id_jogo} | Lista os reviews de um jogo | | GET | /api/v1/reviews/jogo/{id_jogo}/media | Retorna a nota média de um jogo | | GET | /api/v1/reviews/{id_review} | Retorna um review específico pelo id | | POST | /api/v1/reviews | Cria um review | | PUT | /api/v1/reviews/{id_review} | Edita um review | | DELETE | /api/v1/reviews/{id_review} | Remove um review |
Detalhamento das Rotas
GET /api/v1/reviews
Descrição
Lista reviews de acordo com os filtros aplicados. Retorna resultados paginados.
Parâmetros de Consulta (Query String):
- id_jogo (Opcional): Filtra comentários por ID do jogo
- id_usuario (Opcional): Filtra comentários por ID do usuário
- pagina (Opcional): Página atual
- tamanho_pagina (Opcional): Número de itens retornados por página
Exemplo de Requisição
GET http://localhost/api/v1/reviews?id_usuario=581&pagina=3&tamanho_pagina=20
Exemplo de Resposta:
200 OK
{
"total": 412,
"itens": [
{
"idReview": 101,
"idUsuario": 581,
"idJogo": 123,
"nota": 5,
"nomeUsuario": "John Doe",
"dataCriacao": "2026-05-14T00:00:00.000Z",
"comentario": "Review do usuário"
},
{
"idReview": 102,
"idUsuario": 581,
"idJogo": 133,
"nota": 4,
"nomeUsuario": "John Doe",
"dataCriacao": "2026-05-14T00:00:00.000Z",
"comentario": "Review do usuário"
}
]
}
GET /api/v1/reviews/jogo/{id_jogo}
Descrição
Lista os reviews de um jogo. Retorna resultados paginados.
Parâmetros de Consulta (Query String):
- pagina (Opcional): Página atual
- tamanho_pagina (Opcional): Número de itens retornados por página
Exemplo de Requisição
GET http://localhost/api/v1/reviews/jogo/123?pagina=3&tamanho_pagina=20
Exemplo de Resposta:
200 OK
{
"total": 309,
"itens": [
{
"idReview": 101,
"idUsuario": 581,
"idJogo": 123,
"nota": 5,
"nomeUsuario": "John Doe",
"dataCriacao": "2026-05-14T00:00:00.000Z",
"comentario": "Review do usuário"
},
{
"idReview": 102,
"idUsuario": 925,
"idJogo": 123,
"nota": 4,
"nomeUsuario": "Jane Doe",
"dataCriacao": "2026-05-14T00:00:00.000Z",
"comentario": "Review do usuário"
}
]
}
GET /api/v1/reviews/{id_review}
Descrição
Retorna um único review por ID
Parâmetros da URL:
- id_review: ID do review
Exemplo de Requisição
GET http://localhost/api/v1/reviews/101
Exemplo de Resposta:
200 OK
{
"idReview": 101,
"idUsuario": 581,
"idJogo": 123,
"nota": 5,
"nomeUsuario": "John Doe",
"dataCriacao": "2026-05-14T00:00:00.000Z",
"comentario": "Review do usuário"
}
POST /api/v1/reviews
Descrição
Cria um review
Exemplo de Requisição
POST http://localhost/api/v1/reviews
{
"idUsuario": 581,
"idJogo": 123,
"nota": 5,
"comentario": "Review do usuário"
}
Exemplos de Resposta:
200 OK
{
"idReview": 101,
"idUsuario": 581,
"idJogo": 123,
"nota": 5,
"nomeUsuario": "John Doe",
"dataCriacao": "2026-05-14T00:00:00.000Z",
"comentario": "Review do usuário"
}
409 CONFLICT
{
"sucesso": false,
"mensagem": "O usuário já realizou um review deste jogo"
}
PUT /api/v1/reviews/{id_review}
Descrição
Edita um review
Parâmetros da URL:
- id_review: ID do review
Exemplo de Requisição
PUT http://localhost/api/v1/reviews/101
{
"nota": 5,
"comentario": "Review do usuário atualizado"
}
Exemplos de Resposta:
200 OK
{
"idReview": 101,
"idUsuario": 581,
"idJogo": 123,
"nota": 5,
"nomeUsuario": "John Doe",
"dataCriacao": "2026-05-14T00:00:00.000Z",
"comentario": "Review do usuário atualizado"
}
DELETE /api/v1/reviews/{id_review}
Descrição
Remove um review
Parâmetros da URL:
- id_review: ID do review
Exemplo de Requisição
DELETE http://localhost/api/v1/reviews/101
Exemplos de Resposta:
200 OK
{
"sucesso": true
}
GET /api/v1/reviews/jogo/{id_jogo}/media
Descrição
Retorna a nota média de um jogo
Parâmetros da URL:
- id_jogo: ID do jogo
Exemplo de Requisição
GET http://localhost/api/v1/reviews/jogo/123/media
Exemplos de Resposta:
200 OK
{
"media": 4.5,
"numeroAvaliacoes": 2849
}
200 OK
{
"media": null,
"numeroAvaliacoes": 0
}
Explicação das Integrações com Outros Microsserviços:
- O Laravel Central será responsável por rotear todas as rotas com início /api/v1/reviews para este microsserviço.
- O Laravel Central será responsável pela autenticação e emissão do bearer token.
- O Microsserviço de Reviews fará a autorização checando a assinatura do bearer token.
- O Microsserviço de Reviews fará comunicação com o microsserviço de Usuário para obter dados como o nome.
Fluxo principal do serviço:
- Usuário acessa a página de um jogo no Frontend
- Frontend solicita ao Laravel Central os dados do jogo
- Laravel Central consulta o Microsserviço de Jogos
- Laravel Central consulta o Microsserviço de Reviews → GET /reviews/jogo/{id}/media
- Laravel Central monta a resposta completa e envia ao Frontend
- Usuário decide avaliar o jogo e submete nota + comentário
- Frontend envia POST para o Laravel Central
- Laravel Central repassa para o Microsserviço de Reviews → POST /reviews
- Reviews valida o user_id no Microsserviço de Usuários
- Reviews valida o game_id no Microsserviço de Jogos
- Se válidos: salva a avaliação no banco de dados
- Retorna confirmação ao Laravel Central → Frontend → Usuário