Esse projeto é um aplicativo baseado em NestJS que fornece uma API RESTful para gerenciar um catálogo de filmes e usuários.
- TypeScript
- Nest.js
- TypeORM
- Swagger
- Docker
- Redis
- PostgreSQL
-
Clone o repositório:
git clone <https://github.com/alexandrenolla/mks-api>
- Abrir o terminal no docker-compoose.yml
- Executar o comando
docker exec -ti db bash
- Executar o comando
psql -h localhost -U postgres -p 5432
Você pode interagir com a API usando o Swagger embutido no aplicativo ou ferramentas como o Postman ou qualquer cliente HTTP.
Endpoint: POST /api/movies
Request Body:
{
"title": "Titulo Filme",
"category": "Ação",
"description": "Descrição do filme",
"date": "2023-01-01",
"trailer": "http://exemplo.com/trailer"
}
Response:
{
"id": 1,
"title": "Titulo Filme",
"category": "Ação",
"description": "Descrição do filme",
"date": "2023-01-01T00:00:00.000Z",
"trailer": "http://exemplo.com/trailer"
}
Endpoint: GET /api/movies
Response:
[
{
"id": 1,
"title": "Titulo Filme",
"category": "Ação",
"description": "Descrição do filme",
"date": "2023-01-01T00:00:00.000Z",
"trailer": "http://exemplo.com/trailer"
},
// ...
]
Endpoint: GET /api/movies/:id
Response:
{
"id": 1,
"title": "Titulo Filme",
"category": "Ação",
"description": "Descrição do filme",
"date": "2023-01-01T00:00:00.000Z",
"trailer": "http://exemplo.com/trailer"
}
Endpoint: PUT /api/movies/:id
Request Body:
{
"title": "Titulo Filme Atualizado",
"category": "Ação Atualizado",
"description": "Descrição do filme Atualizado",
"date": "2023-01-02",
"trailer": "http://exemplo.com/trailer-atualizado"
}
Response:
{
"id": 1,
"title": "Titulo Filme Atualizado",
"category": "Ação Atualizado",
"description": "Descrição do filme Atualizado",
"date": "2023-01-02T00:00:00.000Z",
"trailer": "http://exemplo.com/trailer-atualizado"
}
Endpoint: DELETE /api/movies/:id
Sem request body. Retorna status 204 se bem sucedido.
Endpoint: POST /api/users
Request Body:
{
"name": "Nome do Usuário",
"email": "usuario@email.com"
}
Response:
{
"id": 1,
"name": "Nome do Usuário",
"email": "usuario@email.com",
"createdAt": "2023-01-01T00:00:00.000Z",
"updatedAt": "2023-01-01T00:00:00.000Z",
"deletedAt": null
}
Endpoint: GET /api/users
Response:
[
{
"id": 1,
"name": "Nome do Usuário",
"email": "usuario@email.com",
"createdAt": "2023-01-01T00:00:00.000Z",
"updatedAt": "2023-01-01T00:00:00.000Z",
"deletedAt": null
},
// ...
]
Endpoint: GET /api/users/:id
Response:
{
"id": 1,
"name": "Nome do Usuário",
"email": "usuario@email.com",
"createdAt": "2023-01-01T00:00:00.000Z",
"updatedAt": "2023-01-01T00:00:00.000Z",
"deletedAt": null
}
Endpoint: PUT /api/users/:id
Request Body:
{
"name": "Novo Nome do Usuário",
"email": "novousuario@email.com"
}
Response:
{
"id": 1,
"name": "Novo Nome do Usuário",
"email": "novousuario@email.com",
"createdAt": "2023-01-01T00:00:00.000Z",
"updatedAt": "2023-01-02T00:00:00.000Z",
"deletedAt": null
}
Endpoint: DELETE /api/users/:id
Response: Status Code 204 se bem sucedido, sem request body.
- Campos:
id
(Chame Primária)name
(String, not nullable)email
(String, not nullable)createdAt
(Date, automaticamente gerado na criação)updatedAt
(Date, automaticamente gerado na alteração)deletedAt
(Date, automaticamente gerado na deleção)
- Campos:
id
(Chave Primária)title
(String, not nullable)category
(String, not nullable)description
(String, not nullable)date
(Date, not nullable)trailer
(String, nullable)
Para rodar os testes do aplicativo, execute o comando:
npm run test
Licença Esse projeto é licenciado sob a Licença da MIT.