From 7bf610845ad920363c2f49ad4e5ce8ee39e9cab6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Gon=C3=A7alves=20Costa?= <20251144030032@ifrn.local> Date: Fri, 22 May 2026 19:34:21 -0300 Subject: [PATCH] Commit apirest --- apirest/.gitignore | 2 ++ apirest/__pycache__/db.cpython-311.pyc | Bin 0 -> 904 bytes apirest/app.py | 38 +++++++++++++++++++++++++ apirest/db.py | 17 +++++++++++ apirest/requirements.txt | 11 +++++++ apirest/scripts.sql | 16 +++++++++++ 6 files changed, 84 insertions(+) create mode 100644 apirest/.gitignore create mode 100644 apirest/__pycache__/db.cpython-311.pyc create mode 100644 apirest/app.py create mode 100644 apirest/db.py create mode 100644 apirest/requirements.txt create mode 100644 apirest/scripts.sql diff --git a/apirest/.gitignore b/apirest/.gitignore new file mode 100644 index 0000000..055b8c0 --- /dev/null +++ b/apirest/.gitignore @@ -0,0 +1,2 @@ +.venv/ +.env diff --git a/apirest/__pycache__/db.cpython-311.pyc b/apirest/__pycache__/db.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..257bc86e781048c1842db643972a270bf8b26cd7 GIT binary patch literal 904 zcma)4&1(}u6rb7bN8)x(<3~jgLMuJ&rP$yHN>!>Ucrgh{ix?KeCbP7SNhZ#0mE0oq z*n0l|~ENIdl*zS(3`f(Us#^PAs${N9^4JM+=9&LFVC7o+kV zBlJT$p($fBTmy252qL(O3ZoSl6!4X5q^1^Bj1=UlZBQMBxdrXZU zlFj5cZB3{0*6;~o>yhRgYD%7};(*LO=U_k`M@%m5i8Sr-7EW)31du! zLb=elJ$X5w&`|bsa`Vw$XA4SlXZ3dS#`WYaC*|=MK5aNzMz?bw@puxVtB%{)Wghn( zQd(&=#aXCQ9GBgtb#@7A$!p>zfEMbT^9K*UnM+^IrM?wEc=op0u@<}5;$F0O^{}F2Xjp&d$Li;=zGeCg){w8P!LR zkjY0Ew8t(;CKK5Lz)5tiM#)~)yU(tGE8h{%0t_M;;~t8&g0F`bj>FMISC6O1cVxEA SH`cz@vIeSwp|^h_*zqqc5yKJy literal 0 HcmV?d00001 diff --git a/apirest/app.py b/apirest/app.py new file mode 100644 index 0000000..1625198 --- /dev/null +++ b/apirest/app.py @@ -0,0 +1,38 @@ +from flask import Flask, jsonify, request +from flask_cors import CORS +import os +from dotenv import load_dotenv +from db import get_connection + +#Carrega arquivo de variáveis de ambiente (.env) +load_dotenv() +#Carrega variável de ambiente PORT. Essa variável contém a porta TCP utilizada na APIREST +PORT = os.getenv("PORT") + +#Cria objeto Flask. Esse objeto é necessário para utilização do FLASK +#(módulo python para criação de APIs REST). +app = Flask(__name__) +#Aplica cors no objeto Flask +CORS(app) + +#Criar rota de saúde da aplicação +@app.route("/health") +def health(): + return jsonify({"message" : "API Flask version 1.0!!!"}) + +@app.route("/produtos",methods=["GET"]) +def listar_produtos(): + conexao = get_connection() + cursor = conexao.cursor(dictionary=True) + + cursor.execute("select * from produto") + produtos = cursor.fetchall() + + cursor.close() + conexao.close() + + return jsonify(produtos) + +#Inicializa o servidor da APIRest +if __name__ == "__main__": + app.run(port=PORT, debug=True) \ No newline at end of file diff --git a/apirest/db.py b/apirest/db.py new file mode 100644 index 0000000..2eb1008 --- /dev/null +++ b/apirest/db.py @@ -0,0 +1,17 @@ +import os +import mysql.connector +from dotenv import load_dotenv + +load_dotenv() + +def get_connection(): + return mysql.connector.connect( + host=os.getenv("DB_HOST"), + user=os.getenv("DB_USER"), + password=os.getenv("DB_PASSWORD"), + database=os.getenv("DB_NAME"), + port=os.getenv("DB_PORT") + ) + + + diff --git a/apirest/requirements.txt b/apirest/requirements.txt new file mode 100644 index 0000000..819763c --- /dev/null +++ b/apirest/requirements.txt @@ -0,0 +1,11 @@ +blinker==1.9.0 +click==8.3.3 +colorama==0.4.6 +Flask==3.1.3 +flask-cors==6.0.2 +itsdangerous==2.2.0 +Jinja2==3.1.6 +MarkupSafe==3.0.3 +mysql-connector-python==9.7.0 +python-dotenv==1.2.2 +Werkzeug==3.1.8 diff --git a/apirest/scripts.sql b/apirest/scripts.sql new file mode 100644 index 0000000..19253e6 --- /dev/null +++ b/apirest/scripts.sql @@ -0,0 +1,16 @@ +#Criar tabela produto +create table produto ( + id int auto_increment primary key, + nome varchar(100) not null, + preco decimal(10,2) not null, + estoque int not null +); + +#Carga incial do banco +insert into produto (nome,preco,estoque) +values ('Bola',12.50,10); +insert into produto (nome,preco,estoque) +values ('PS5',3950.50,5); + +#Exemplo de consulta +#select * from produto;