API desenvolvida como trabalho para a matéria de Engenharia de Software II do bacharelado em Ciência da Computação no IFPR Campus Pinhais.
Para executar o projeto em sua máquina é necessário ter as seguintes ferramentas instaladas em seu computador:
- Docker
Foram utilizadas as seguintes stacks no projeto:
Clone o repositório para executar a API localmente:
# Clonando o repositório
$ https://github.com/EricoMeger/LibrePlay-API.git
$ cd LibrePlay-APINa pasta do projeto, rode o seguinte comando para buildar o Docker:
$ docker compose buildDepois de construir a imagem, você pode executar o container com o seguinte comando:
$ docker compose upAgora, o servidor deve estar rodando na porta 3030 do seu host, e você pode acessar o endpoint /status para checar o funcionamento.
As seguintes rotas estão disponíveis para a API:
- GET http://localhost:3030/status
- POST http://localhost:3030/cadastrar/usuario
- POST http://localhost:3030/login/usuario
- POST http://localhost:3030/buscar/filme
GET: Rota para obter status de funcionamento da API.
POST: Rota para cadastrar usuários e pesquisar filmes no banco.
{
"status": "API rodando"
}{
"user": {
"name": "nome_teste",
"email": "email@gmail.com",
"password": "coxinha123"
}
}{
"sucess": true,
"message": "User registered successfully"
}{
"user": {
"email": "email@gmail.com",
"password": "coxinha123"
}
}{
"sucess": true,
"message": "User logged in successfully"
}Exemplo de erro:
{
"user": {
"email": "email@gmail.com",
"password": "senha_errada"
}
}{
"sucess": false,
"message": "Invalid password"
}{
"filme":{
"id": 1,
"titulo": "Inception",
"data_lancamento": "2010-07-16",
"duracao": 148,
"sinopse": "Um ladrão que rouba segredos corporativos...",
"classificacao": "PG-13",
"idioma": "Inglês",
"pais_origem": "EUA",
"url_capa": "http://example.com/inception.jpg",
"url_filme": "http://example.com/inception.mp4",
"created_at": "2024-09-02T23:30:16.000Z",
"updated_at": "2024-09-02T23:30:16.000Z",
"avaliacao": 8.8
}
}{
"sucess": true,
"message": [
{
"id": 1,
"titulo": "Inception",
"data_lancamento": "2010-07-16",
"genero_id": 1,
"duracao": 148,
"diretor_id": 1,
"sinopse": "Um ladrão que rouba segredos corporativos...",
"classificacao": "PG-13",
"idioma": "Inglês",
"pais_origem": "EUA",
"url_capa": "http://example.com/inception.jpg",
"url_filme": "http://example.com/inception.mp4",
"created_at": "2024-09-02T23:30:16.000Z",
"updated_at": "2024-09-02T23:30:16.000Z",
"avaliacao": 8.8
}
]
}O exemplo acima mostra todas as possibilidades de campos para pesquisa, mas todos esses campos são opcionais. Por exemplo, é possível fazer uma pesquisa com base somente no título do filme:
{
"filme":{
"titulo": "Inception"
}
}{
"sucess": true,
"message": [
{
"id": 1,
"titulo": "Inception",
"data_lancamento": "2010-07-16",
"genero_id": 1,
"duracao": 148,
"diretor_id": 1,
"sinopse": "Um ladrão que rouba segredos corporativos...",
"classificacao": "PG-13",
"idioma": "Inglês",
"pais_origem": "EUA",
"url_capa": "http://example.com/inception.jpg",
"url_filme": "http://example.com/inception.mp4",
"created_at": "2024-09-02T23:30:16.000Z",
"updated_at": "2024-09-02T23:30:16.000Z",
"avaliacao": 8.8
}
]
}