Quickstarters
Feature Overview
Como Construir um Backend para Flask?
41 min
introdução neste tutorial, você aprenderá como construir um backend para flask usando o back4app flask é um framework de backend leve que lida com requisições http com facilidade, e funciona de forma eficiente em modo de depuração durante o desenvolvimento vamos percorrer a integração de recursos essenciais do back4app—como gerenciamento de banco de dados, funções de cloud code, apis rest e graphql, autenticação de usuários e consultas em tempo real (live queries)—para criar um backend seguro, escalável e robusto para sua aplicação flask você também verá como a configuração rápida do back4app e o ambiente intuitivo podem reduzir drasticamente o tempo e o esforço em comparação com a configuração manual de servidores e bancos de dados usaremos código python para conectar o flask ao servidor parse do back4app ao longo do caminho, você ganhará experiência prática com funcionalidades chave, incluindo recursos avançados de segurança, agendamento de tarefas com cloud jobs e configuração de webhooks para integrações externas ao final deste tutorial, você estará bem preparado para aprimorar essa configuração básica em uma aplicação pronta para produção ou facilmente incorporar lógica personalizada e apis de terceiros conforme necessário pré requisitos para completar este tutorial, você precisará uma conta back4app e um novo projeto back4app introdução ao back4app https //www back4app com/docs/get started/new parse app se você não tiver uma conta, pode criar uma gratuitamente siga o guia acima para preparar seu projeto ambiente básico de desenvolvimento flask você pode instalar o flask via pip install flask certifique se de ter o python 3 7+ instalado em sua máquina pip install parse este pacote python permite que seu aplicativo flask interaja com o parse server do back4app familiaridade com conceitos de python e flask documentação oficial do flask https //flask palletsprojects com/en/2 2 x/ se você é novo no flask, revise a documentação oficial ou um tutorial para iniciantes antes de começar certifique se de ter todos esses pré requisitos em ordem antes de começar ter seu projeto back4app configurado e seu ambiente flask local pronto ajudará você a acompanhar mais facilmente passo 1 – criando um novo projeto no back4app e conectando criar um novo projeto o primeiro passo para construir seu backend flask no back4app é criar um novo projeto se você ainda não criou um, siga estes passos faça login na sua conta back4app clique no botão “novo app” no seu painel do back4app dê um nome ao seu app (por exemplo, “flask backend tutorial”) uma vez que o projeto é criado, você verá ele listado no seu painel do back4app este projeto é a base de todas as configurações de backend conecte o sdk parse ao flask back4app depende da plataforma parse para gerenciar seus dados, fornecer recursos em tempo real, lidar com autenticação de usuários e mais conectar sua aplicação flask ao back4app envolve instalar o parse pacote python e inicializá lo com as credenciais do seu painel do back4app recupere suas chaves parse no seu painel do back4app, navegue até a seção “configurações do app” ou “segurança & chaves” para encontrar seu id da aplicação e chave do cliente (ou chave da api rest se necessário) você também encontrará a url do servidor parse (geralmente no formato https //parseapi back4app com ) instale o sdk python parse no seu ambiente flask executando pip install parse inicialize o parse na sua aplicação flask crie um arquivo (por exemplo, parse config py ) em um diretório chamado app ou onde quer que você armazene seus módulos de backend parse config py import parse \# replace the placeholders with your back4app credentials parse application id = "your application id" parse client key = "your client key" parse server url = "https //parseapi back4app com" então, no seu arquivo principal do flask (por exemplo, app py ), você pode importar os módulos do flask app flask junto com sua configuração do parse from flask import flask, request, jsonify import parse config # this ensures parse is already set up app = flask( name ) @app route('/') def index() return "hello, flask + back4app!" if name == ' main ' app run(debug=true) # the debug mode helps in local development server ao completar esta etapa, você estabeleceu uma conexão segura entre suas rotas front end do flask e o backend do back4app todas as solicitações e transações de dados são roteadas de forma segura através do código python do parse, reduzindo a complexidade de chamadas rest ou graphql manuais (embora você ainda possa usá las quando necessário) etapa 2 – configurando o banco de dados criando um modelo de dados antes de começarmos, vamos falar sobre como configurar o banco de dados você pode projetar seu esquema de dados no painel do back4app ou deixar o parse criá lo dinamicamente por exemplo, você pode criar uma classe chamada “todo” com campos como title e iscompleted navegue até a seção “banco de dados” no seu painel do back4app crie uma nova classe (por exemplo, “todo”) e adicione colunas relevantes, como título (string) e iscompleted (boolean) back4app suporta vários tipos de dados, como string , number , boolean , object , date , file , pointer , array , relation , geopoint , e polygon você pode escolher o tipo apropriado para cada campo criando um modelo de dados usando o agente de ia se você preferir uma abordagem automatizada, você também pode usar o agente de ia do back4app abra o agente de ia no seu painel de controle do app descreva seu modelo de dados em linguagem simples (por exemplo, “crie uma classe todo com campos título e iscompleted no back4app ”) deixe o agente de ia criar o schema para você lendo e escrevendo dados usando sdk no flask, você pode criar e buscar dados importando parse do seu parse config py inicialização from flask import flask, request, jsonify import parse import parse config app = flask( name ) @app route('/create todo', methods=\['post']) def create todo() data = request get json() # import json to parse the payload title = data get('title') is completed = data get('iscompleted', false) todo = parse object factory('todo') todo item = todo() todo item title = title todo item iscompleted = is completed try saved todo = todo item save() return jsonify({"success" true, "objectid" saved todo objectid}), 200 except exception as e return jsonify({"error" str(e)}), 400 @app route('/fetch todos', methods=\['get']) def fetch todos() todo = parse object factory('todo') query = todo query try todos = query find() \# convert to json compatible response results = \[{"objectid" t objectid, "title" t title, "iscompleted" t iscompleted} for t in todos] return jsonify(results), 200 except exception as e return jsonify({"error" str(e)}), 400 if name == ' main ' app run(debug=true) este arquivo do aplicativo flask manipula requisições http para criar e ler itens de todo no seu banco de dados back4app lendo e escrevendo dados usando rest api se você preferir chamadas rest diretas, pode testar com curl a partir do linha de comando curl x post \\ h "x parse application id your application id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"title" "buy groceries", "iscompleted" false}' \\ https //parseapi back4app com/classes/todo lendo e escrevendo dados usando graphql api da mesma forma, o back4app fornece um endpoint graphql por exemplo mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } trabalhando com consultas ao vivo (opcional) se você precisar atualizações em tempo real , o back4app fornece consultas ao vivo em um cenário flask, você normalmente usaria uma biblioteca de assinatura separada do lado do cliente ou do servidor que pode manter uma conexão websocket com o servidor de consultas ao vivo do back4app ativar consultas ao vivo no seu painel do back4app em configurações do servidor do seu aplicativo use um cliente parse livequery que se conecta a wss\ //your subdomain here b4a io e escuta eventos de criação/atualização/exclusão passo 3 – aplicando segurança com acls e clps visão geral o back4app fornece listas de controle de acesso (acls) e permissões de nível de classe (clps) para restringir dados as acls se aplicam a objetos individuais, enquanto as clps se aplicam a toda a classe isso ajuda você a restringir ou permitir operações de leitura/gravação por usuário, função ou público configurando permissões de nível de classe vá para o seu painel do back4app , selecione seu aplicativo e abra a seção banco de dados selecione uma classe (por exemplo, “todo”) abra as permissões de nível de classe configure seus padrões, como “requer autenticação” ou “sem acesso ” configurando acls no código você pode aplicar acls no código python @app route('/create private todo', methods=\['post']) def create private todo() data = request get json() user id = data get('userid') title = data get('title') \# assume you have a pointer to the user or a way to get user from id parseuser = parse user user query = parseuser query user obj = user query get(user id) todo = parse object factory('todo') todo item = todo() todo item title = title acl = parse acl() acl setreadaccess(user obj, true) acl setwriteaccess(user obj, true) acl setpublicreadaccess(false) acl setpublicwriteaccess(false) todo item acl = acl saved todo = todo item save() return jsonify({"success" true, "objectid" saved todo objectid}), 200 passo 4 – escrevendo funções de cloud code por que cloud code cloud code é perfeito para executar código python (ou javascript em outros cenários) no lado do servidor, para que você não precise hospedar sua própria infraestrutura você pode executar tarefas como validar dados, realizar cálculos complexos ou integrar com serviços externos diretamente do servidor parse função de exemplo como o ambiente padrão do cloud code para back4app usa node js, você escreveria seu cloud code em javascript no entanto, você ainda pode acionar esses scripts do lado do servidor a partir do seu aplicativo flask por exemplo, uma função do cloud function em node js pode parecer main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); implantação use o back4app cli https //www back4app com/docs/local development/parse cli para implantar seu cloud code \# step 1 install the cli curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash \# step 2 configure your account key b4a configure accountkey \# step 3 deploy your code b4a deploy alternativamente, você pode implantar via o painel do back4app colando seu código js em cloud code > functions e clicando em “implantar ” chamando sua função no flask, você pode chamar essa função em nuvem usando rest import requests @app route('/text length', methods=\['post']) def get text length() data = request get json() text = data get('text') url = "https //parseapi back4app com/functions/calculatetextlength" headers = { "x parse application id" "your app id", "x parse rest api key" "your rest api key", "content type" "application/json" } payload = {"text" text} response = requests post(url, json=payload, headers=headers) return jsonify(response json()), response status code passo 5 – configurando a autenticação ative ou configure a autenticação de usuário no painel do back4app o back4app aproveita a user classe por padrão o parse gerencia a hash de senhas, tokens de sessão e armazenamento seguro você pode gerenciar esses recursos nas suas configurações do app exemplos de código @app route('/signup', methods=\['post']) def sign up user() data = request get json() username = data get('username') password = data get('password') email = data get('email') user = parse user() user username = username user password = password user email = email try user sign up() return jsonify({"success" true}), 200 except exception as e return jsonify({"error" str(e)}), 400 @app route('/login', methods=\['post']) def log in user() data = request get json() username = data get('username') password = data get('password') try parse user login(username, password) return jsonify({"success" true}), 200 except exception as e return jsonify({"error" str(e)}), 400 login social back4app e parse podem se integrar com provedores sociais como google, apple ou facebook os detalhes de configuração variam, então consulte a documentação de login social do parse https //www back4app com/docs/platform/sign in with apple passo 6 – gerenciando armazenamento de arquivos configurando armazenamento de arquivos você pode fazer upload de arquivos para seu banco de dados parse a partir do flask criando um parse file() objeto no ambiente baseado em node, ou você pode usar chamadas rest diretas do python se você armazenar referências a esses arquivos em suas classes, eles se tornam facilmente recuperáveis @app route('/upload file', methods=\['post']) def upload file() file = request files\['file'] # from an html form or an api call file name = file filename url = "https //parseapi back4app com/files/" + file name headers = { "x parse application id" "your app id", "x parse rest api key" "your rest api key", "content type" file content type } response = requests post(url, data=file read(), headers=headers) return jsonify(response json()), response status code exemplo após fazer o upload de um arquivo, você receberá uma url do arquivo que pode armazenar em seu banco de dados você pode então renderizar ou referenciar esse arquivo em seu modelo html conforme necessário passo 7 – verificação de email e redefinição de senha visão geral a verificação de email garante endereços de email válidos, e a redefinição de senha ajuda os usuários a recuperar o acesso à conta de forma segura configuração do painel do back4app vá para suas configurações de email no painel do back4app ative a verificação de email e configure modelos de email ative a redefinição de senha para enviar links de recuperação de senha para o email do usuário código/implementação uma vez ativado, qualquer novo usuário que se inscrever com um email receberá um link de verificação para redefinição de senha, você pode chamar os métodos integrados do parse via rest ou a partir de suas rotas flask passo 8 – agendando tarefas com cloud jobs o que os cloud jobs fazem os cloud jobs permitem que você agende tarefas em segundo plano, como limpar dados ou enviar e mails periódicos por exemplo, você pode excluir registros antigos todos os dias sem intervenção do usuário exemplo // main js parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); const now = new date(); const thirty days = 30 24 60 60 1000; const cutoff = new date(now thirty days); query lessthan('createdat', cutoff); try { const oldtodos = await query find({ usemasterkey true }); await parse object destroyall(oldtodos, { usemasterkey true }); return `deleted ${oldtodos length} old todos `; } catch (err) { throw new error('error during cleanup ' + err message); } }); então, a partir do seu painel do back4app vá para configurações do app > configurações do servidor > tarefas em segundo plano agende esta tarefa para ser executada diariamente ou no intervalo de sua preferência passo 9 – integrando webhooks definição webhooks permitem que seu aplicativo back4app envie dados para serviços externos sempre que certos gatilhos ocorrerem isso é útil para integrações com gateways de pagamento, slack, análises ou qualquer serviço de terceiros configuração navegue até a configuração de webhooks no seu painel do back4app > mais > webhooks adicione um novo webhook defina o endpoint (por exemplo, https //your external service com/webhook endpoint https //your external service com/webhook endpoint ) selecione os gatilhos para os quais o webhook será acionado exemplo se você quiser notificar um canal do slack sempre que um novo registro for criado em “todo”, defina a url do webhook do slack então, sempre que um novo todo for salvo, o slack receberá uma solicitação post contendo seus detalhes passo 10 – explorando o painel de administração do back4app o aplicativo de administração do back4app fornece uma interface amigável para membros não técnicos da sua equipe é uma interface centrada em modelos para operações crud e tarefas de nível empresarial onde encontrá lo vá para o seu painel de aplicativos selecione mais > aplicativo admin e ative o crie um usuário admin e escolha um subdomínio para hospedar o painel uma vez ativado, você pode fazer login com suas credenciais de admin para gerenciar dados de forma mais conveniente—sem escrever endpoints ou consultas personalizadas no seu código python conclusão ao seguir este tutorial abrangente, você tem criado um backend seguro para um aplicativo flask no back4app configurado um banco de dados com esquemas de classe, tipos de dados e relacionamentos integrado consultas em tempo real (consultas ao vivo) para atualizações imediatas de dados aplicado medidas de segurança usando acls e clps para proteger e gerenciar o acesso aos dados implementado funções de cloud code para executar lógica de negócios personalizada no lado do servidor configurado autenticação de usuário com suporte para verificação de e mail e redefinições de senha gerenciado uploads de arquivos e recuperação, com controles de segurança de arquivos opcionais agendado cloud jobs para tarefas automatizadas em segundo plano usado webhooks para integrar com serviços externos explorado o painel de administração do back4app para gerenciamento de dados com um sólido framework backend flask que pode retornar arquivos de template renderizados , e uma configuração robusta do back4app, você está agora equipado para desenvolver aplicações ricas em recursos, escaláveis e seguras você pode executar o seu flask run comando para iniciar o servidor de desenvolvimento e continuar codificando a linha de comando tarefas se tornam diretas com métodos pós definição rotas que aceitam cargas úteis json próximos passos construa um aplicativo flask pronto para produção estendendo este backend para lidar com modelos de dados mais complexos, estratégias de cache e otimizações de desempenho integre recursos avançados como fluxos de autenticação especializados, controle de acesso baseado em funções ou apis externas (como gateways de pagamento) confira a documentação oficial do back4app para mergulhos mais profundos em segurança avançada, ajuste de desempenho e análise de logs explore outros tutoriais sobre aplicativos de chat em tempo real, painéis de iot ou serviços baseados em localização você pode combinar as técnicas aprendidas aqui com apis de terceiros para criar aplicativos complexos do mundo real