progredes20261/apirest/app.py

78 lines
2.2 KiB
Python
Raw Normal View History

2026-05-15 23:33:17 +00:00
from flask import Flask, jsonify, request
from flask_cors import CORS
import os
from dotenv import load_dotenv
2026-05-16 01:12:23 +00:00
from db import get_connection
2026-05-15 23:33:17 +00:00
#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!!!"})
2026-05-23 01:00:16 +00:00
#=============================================================
2026-05-16 01:12:23 +00:00
@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)
2026-05-23 01:00:16 +00:00
#=============================================================
@app.route("/produtos/<int:id>", methods=["GET"])
def listar_produto_id(id):
conexao = get_connection()
cursor = conexao.cursor(dictionary=True)
cursor.execute("Select * from produto where id = %s", (id,))
produto = cursor.fetchone()
cursor.close()
conexao.close()
if produto is None:
return jsonify({"erro" : "Produto não encontrado"}), 404
return jsonify(produto)
#=============================================================
@app.route("/produtos",methods=["POST"])
def criar_produto():
dados = request.get_json()
nome = dados.get("nome")
preco = dados.get("preco")
estoque = dados.get("estoque")
if nome is None or preco is None or estoque is None:
return jsonify({"erro" : "Produto inválido"}), 400
conexao = get_connection()
cursor = conexao.cursor()
sql = "insert into produto (nome, preco, estoque) values (%s, %s, %s)"
cursor.execute(sql,(nome, preco, estoque))
novo_id = cursor.lastrowid
cursor.close()
conexao.close()
return jsonify({"id" : novo_id, "nome": nome, "preco" : preco, "estoque" : estoque}), 201
2026-05-15 23:33:17 +00:00
#Inicializa o servidor da APIRest
if __name__ == "__main__":
app.run(port=PORT, debug=True)