Skip to content

elainefs/django-flix-api

Repository files navigation

Flix API

📘 Sobre

API RESTful para gerenciamento de informações sobre filmes desenvolvida usando Django e Django REST framework.

Essa API é consumida por uma aplicação em Streamlit para visualização dos dados.

💻️ Tecnologias

  • Python
  • Django
  • Django REST framework
  • SQLite

✅ Funcionalidade

  • Autenticação com JWT para proteger os endpoints
  • Listagem, criação, atualização e deleção de atores/atrizes
  • Listagem, criação, atualização e deleção de gêneros de filmes
  • Listagem, criação, atualização e deleção de filmes
  • Listagem, criação, atualização e deleção de avaliações de filmes
  • Listagem das estatísticas dos filmes cadastrados e avaliados
  • Django Command para adicionar atores/atrizes a partir de arquivo .csv

⚙️ Como usar

Para executar essa aplicação siga os seguintes passos:

  1. Clone o repositório
git clone https://github.com/elainefs/django-flix-api.git

cd django-flix-api
  1. Crie e ative um ambiente virtual
python3 -m venv .venv # Para Windows use: python -m venv .venv
source .venv/bin/activate  # Para Windows use: .venv\Scripts\activate
  1. Instale as dependências do projeto
pip install -r requirements.txt
  1. Execute as migrações no banco de dados
python3 manage.py migrate
  1. Crie um super usuário
python3 manage.py createsuperuser
  1. Popule o banco com atores e atrizes
python3 manage.py import_actors actors.csv
  1. Execute a aplicação
python3 manage.py runserver

A aplicação estará disponível em http://localhost:8000.

O gerenciamento pode ser feito através da interface do Django Admin em: http://localhost:8000/admin/

Você pode interagir com a API utilizando ferramentas como Postman, Insomnia, entre outras.

🔗 Endpoints da API

Autenticação JWT

Para ter acesso aos dados da API é necessário um token JWT.

O access token possui validade de 1 dia e o refresh de 7 dias.

Criação de Token

POST - http://localhost:8000/api/v1/authentication/token/

Passe as informações do usuário cadastrado no sistema no body da requisição:

{
    "username": "admin",
    "password": "admin"
}

Verificação do Token

POST - http://localhost:8000/api/v1/authentication/token/verify/

Passe o access token obtido na criação no body da requisição:

{
    "token": "access_token"
}

Refresh Token

POST - http://localhost:8000/api/v1/authentication/token/refresh/

Passe o refresh token obtido na criação no body da requisição:

{
    "refresh": "refresh_token"
}

Gêneros de Filmes

Criar gênero de filme

POST - http://localhost:8000/api/v1/genres/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Request Body:

{
  "name": "Ficção"
}

Listar todos os gêneros

GET - http://localhost:8000/api/v1/genres/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Listar gênero por ID

GET - http://localhost:8000/api/v1/genres/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_do_filme

Atualizar gênero

PUT - http://localhost:8000/api/v1/genres/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_do_filme

Request Body:

{
  "name": "Ficção Científica"
}

Excluir gênero

DELETE - http://localhost:8000/api/v1/genres/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_do_filme

Atore/Atrizes

Criar Ator/Atriz

POST - http://localhost:8000/api/v1/actors/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Request Body:

{
  "name": "Fernanda Torres",
  "birthday": "1965-09-15",
  "nationality": "BRAZIL"
}

Atualmente só é possível cadastrar nacionalidades "BRAZIL" e "USA".

Listar todos os atores/atrizes

GET - http://localhost:8000/api/v1/actors/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Listar ator/atriz por ID

GET - http://localhost:8000/api/v1/actors/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_do_ator

Atualizar ator/atriz

PUT - http://localhost:8000/api/v1/actors/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_do_ator

Request Body:

{
  "name": "Fernanda Torres",
  "birthday": "1965-09-15",
  "nationality": "BRAZIL"
}

Excluir ator/atriz

DELETE - http://localhost:8000/api/v1/actors/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_do_ator

Filmes

Criar filme

POST - http://localhost:8000/api/v1/movies/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Request Body:

{
  "title": "As branquelas",
  "release_date": "2004-06-23",
  "resume": "Dois agentes do FBI desonrados se disfarçam em um esforço para proteger duas herdeiras de um plano de sequestro.",
  "genre": 2,
  "actors": [1]
}

Listar todos os filmes

GET - http://localhost:8000/api/v1/movies/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Listar filmes por ID

GET - http://localhost:8000/api/v1/movies/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_do_filme

Atualizar filme

PUT - http://localhost:8000/api/v1/movies/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_do_filme

Request Body:

{
  "title": "As branquelas",
  "release_date": "2004-06-23",
  "resume": "Dois agentes do FBI desonrados se disfarçam em um esforço para proteger duas herdeiras de um plano de sequestro.",
  "genre": 2,
  "actors": [1]
}

Excluir filme

DELETE - http://localhost:8000/api/v1/movies/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_do_filme

Estatísticas dos filmes

GET - http://localhost:8000/api/v1/movies/stats/

Avaliação

Criar avaliação

POST - http://localhost:8000/api/v1/reviews/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Request Body:

{
  "stars": 5,
  "movie": 3
}

Listar todas as avaliações

GET - http://localhost:8000/api/v1/reviews/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Listar avaliações por ID

GET - http://localhost:8000/api/v1/reviews/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_da_review

Atualizar avaliação

PUT - http://localhost:8000/api/v1/reviews/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_da_review

Request Body:

{
  "stars": 5,
  "movie": 3
}

Excluir avaliação

DELETE - http://localhost:8000/api/v1/reviews/{id}/

Campos do header da requisição:

Campo Valor
Authorization Bearer token

Parâmetros

Campo Valor
id id_da_review

📄 Licença

Este projeto está sobre a licença MIT. Veja o arquivo LICENSE para mais informações.


Made with ❤️ by Elaine Ferreira

About

Django API for movies

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages