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.
- Python
- Django
- Django REST framework
- SQLite
- 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
Para executar essa aplicação siga os seguintes passos:
- Clone o repositório
git clone https://github.com/elainefs/django-flix-api.git
cd django-flix-api- 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- Instale as dependências do projeto
pip install -r requirements.txt- Execute as migrações no banco de dados
python3 manage.py migrate- Crie um super usuário
python3 manage.py createsuperuser- Popule o banco com atores e atrizes
python3 manage.py import_actors actors.csv- Execute a aplicação
python3 manage.py runserverA 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.
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.
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"
}
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"
}
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"
}
POST - http://localhost:8000/api/v1/genres/
Campos do header da requisição:
| Campo | Valor |
|---|---|
| Authorization | Bearer token |
Request Body:
{
"name": "Ficção"
}GET - http://localhost:8000/api/v1/genres/
Campos do header da requisição:
| Campo | Valor |
|---|---|
| Authorization | Bearer token |
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 |
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"
}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 |
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".
GET - http://localhost:8000/api/v1/actors/
Campos do header da requisição:
| Campo | Valor |
|---|---|
| Authorization | Bearer token |
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 |
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"
}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 |
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]
}GET - http://localhost:8000/api/v1/movies/
Campos do header da requisição:
| Campo | Valor |
|---|---|
| Authorization | Bearer token |
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 |
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]
}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 |
GET - http://localhost:8000/api/v1/movies/stats/
POST - http://localhost:8000/api/v1/reviews/
Campos do header da requisição:
| Campo | Valor |
|---|---|
| Authorization | Bearer token |
Request Body:
{
"stars": 5,
"movie": 3
}GET - http://localhost:8000/api/v1/reviews/
Campos do header da requisição:
| Campo | Valor |
|---|---|
| Authorization | Bearer token |
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 |
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
}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 |
Este projeto está sobre a licença MIT. Veja o arquivo LICENSE para mais informações.
Made with ❤️ by Elaine Ferreira