Skip to content

EricoMeger/LibrePlay-API

Repository files navigation

LibrePlay-API

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.

Requisitos

Para executar o projeto em sua máquina é necessário ter as seguintes ferramentas instaladas em seu computador:

  • Docker

Stacks

Foram utilizadas as seguintes stacks no projeto:

Como executar o projeto

Clone o repositório para executar a API localmente:

# Clonando o repositório
$ https://github.com/EricoMeger/LibrePlay-API.git
$ cd LibrePlay-API

Na pasta do projeto, rode o seguinte comando para buildar o Docker:

$ docker compose build

Depois de construir a imagem, você pode executar o container com o seguinte comando:

$ docker compose up

Agora, o servidor deve estar rodando na porta 3030 do seu host, e você pode acessar o endpoint /status para checar o funcionamento.

Rotas

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.

Exemplos de uso

GET - Rota '/status'

Saída

{
  "status": "API rodando"
}

POST - Rota '/cadastrar/usuario'

Entrada

{
  "user": {
    "name": "nome_teste",
    "email": "email@gmail.com",
    "password": "coxinha123"
  }
}

Saída

{
  "sucess": true,
  "message": "User registered successfully"
}

POST - Rota '/login/usuario'

Entrada

{
  "user": {
    "email": "email@gmail.com",
    "password": "coxinha123"
  }
}

Saída

{
  "sucess": true,
  "message": "User logged in successfully"
}

Exemplo de erro:

{
  "user": {
    "email": "email@gmail.com",
    "password": "senha_errada"
  }
}

Saída

{
  "sucess": false,
  "message": "Invalid password"
}

POST - Rota '/buscar/filme'

Entrada

{
  "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
  }
}

Saída

{
"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"
  }
}

Saída

{
"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
    }
  ]
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors