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) #============================================================= @app.route("/produtos/", 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)) conexao.commit() novo_id = cursor.lastrowid cursor.close() conexao.close() return jsonify({"id" : novo_id, "nome": nome, "preco" : preco, "estoque" : estoque}), 201 #Inicializa o servidor da APIRest if __name__ == "__main__": app.run(port=PORT, debug=True)