Este é um projeto foi criado para que o usuário use uma api que possa fazer o cadastramento de filmes e o cadastramento de avaliações desses filmes. Além disso, foi utilizado todos os requisitos para o CRUD e o API RESTful. Veja abaixo o modelo de entidade-relacionamento desse gerenciamento:
Observe pelo modelo de entidade-relacionamento, que avaliações possui um forte dependência, pois sempre estará linkada a um filme. Entretanto, um filme pode estar linkado a várias avaliações.
Ademais, o projeto consiste em duas etapas, a primeira consolida suas informações em arquivos .txt sem a utilização de banco de dados. Veja abaixo:
Nesse vídeo é possível encontrar requisitos adequados de práticas iniciais do uso da API e como utilizá-la no mundo real, como por exemplo, conexão com o front-end.
https://www.youtube.com/watch?v=pYtyoPe8YtU
Nesse contexto, o projeto busca a melhores práticas do mercado, portanto, é importante a utilização de banco de dados. Logo, na segunda parte do projeto é utilizado MySQL, entretanto, qualquer outro database pode ser implementado. Visualize abaixo a segunda parte implementada e explicada:
Nesse vídeo é possível encontrar requisitos adequados de práticas do uso da API conectadas a um banco de dados.
https://youtu.be/c97G6mM7Quk
Com isso, para rodar o projeto em sua máquina local siga as etapas abaixo:
- Uitlize o prompt de comando para Clonar o repositório em um diretório da sua preferência:
git clone https://github.com/RicardoMourao-py/FastAPI_Filmes.git - Crie seu ambiente virtual no prompt
python -m venv name_env - Ative o seu ambiente virtual
name_env\Scripts\activate.bat - Instale todas suas dependências
pip install -r requirements.txt - Crie seu database com suas tabelas no seu DBMS(Database Management System) com a query abaixo:
CREATE DATABASE IF NOT EXISTS filmes; USE filmes; CREATE TABLE IF NOT EXISTS filmes ( id_filme INTEGER PRIMARY KEY NOT NULL auto_increment, nome VARCHAR(255) UNIQUE NOT NULL, ano INTEGER NOT NULL, duracao FLOAT NOT NULL, descricao TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS avaliacoes ( id_avaliacao INTEGER PRIMARY KEY NOT NULL auto_increment, comentario TEXT NOT NULL, nota FLOAT NOT NULL CHECK (nota >= 0 AND nota <= 10), id_filme INTEGER, FOREIGN KEY (id_filme) REFERENCES filmes(id_filme) ON DELETE CASCADE );- Crie um arquivo
.envno seu diretório com suas credenciais. Observe que o banco de dados utilizado é oMySQL, caso esteja utilizando outro, pesquise quais características seu arquivo.envdeve ter e modifique o arquivo database.py de acordo com as especificações. Caso esteja utilizando o mesmo, basta criá-lo com o seguinte conteúdo (lembre-se de adicionar o que está em branco):
DB_PROVIDER=mysql DB_DRIVER=mysqlconnector DB_DATABASE_NAME=filmes DB_USER= DB_PASSWORD= DB_HOST=localhost DB_PORT=3306 DB_CONNECTION_STRING=${DB_PROVIDER}+${DB_DRIVER}://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_DATABASE_NAME} - Execute o projeto
uvicorn main:app --reload - Abra o seu browser em:
http://127.0.0.1:8000/docs
Deve aparecer a seguinte tela:

