Quickstarters
Feature Overview
How to Build a Backend for Flask?
41 min
introducción en este tutorial, aprenderás cómo construir un backend para flask utilizando back4app flask es un framework de backend ligero que maneja solicitudes http con facilidad, y funciona de manera eficiente en modo de depuración durante el desarrollo recorreremos la integración de características esenciales de back4app, como la gestión de bases de datos, funciones de cloud code, apis rest y graphql, autenticación de usuarios y consultas en tiempo real (live queries), para crear un backend seguro, escalable y robusto para tu aplicación flask también verás cómo la configuración rápida de back4app y su entorno intuitivo pueden reducir drásticamente el tiempo y el esfuerzo en comparación con la configuración manual de servidores y bases de datos usaremos código python para conectar flask al servidor parse de back4app a lo largo del camino, adquirirás experiencia práctica con funcionalidades clave, incluyendo características de seguridad avanzadas, programación de tareas con cloud jobs y configuración de webhooks para integraciones externas al final de este tutorial, estarás bien preparado para mejorar esta configuración básica en una aplicación lista para producción o incorporar fácilmente lógica personalizada y apis de terceros según sea necesario requisitos previos para completar este tutorial, necesitarás una cuenta de back4app y un nuevo proyecto de back4app comenzando con back4app https //www back4app com/docs/get started/new parse app si no tienes una cuenta, puedes crear una gratis sigue la guía anterior para preparar tu proyecto entorno de desarrollo básico de flask puedes instalar flask a través de pip install flask asegúrate de tener python 3 7+ instalado en tu máquina pip install parse este paquete de python permite que tu aplicación flask interactúe con el servidor parse de back4app familiaridad con python y conceptos de flask documentación oficial de flask https //flask palletsprojects com/en/2 2 x/ si eres nuevo en flask, revisa la documentación oficial o un tutorial para principiantes antes de comenzar asegúrate de tener todos estos requisitos previos en su lugar antes de comenzar tener tu proyecto de back4app configurado y tu entorno local de flask listo te ayudará a seguir más fácilmente paso 1 – crear un nuevo proyecto en back4app y conectarse crear un nuevo proyecto el primer paso para construir tu backend de flask en back4app es crear un nuevo proyecto si aún no has creado uno, sigue estos pasos inicia sesión en tu cuenta de back4app haz clic en el botón “nueva app” en tu panel de control de back4app dale un nombre a tu app (por ejemplo, “flask backend tutorial”) una vez que se crea el proyecto, lo verás listado en tu panel de control de back4app este proyecto es la base de todas las configuraciones del backend conectar el sdk de parse a flask back4app se basa en la plataforma parse para gestionar tus datos, proporcionar características en tiempo real, manejar la autenticación de usuarios y más conectar tu aplicación flask a back4app implica instalar el parse paquete de python e inicializarlo con las credenciales de tu panel de control de back4app recupera tus claves de parse en tu panel de back4app, navega a la sección “configuración de la aplicación” o “seguridad y claves” de tu aplicación para encontrar tu id de aplicación y clave de cliente (o clave de api rest si es necesario) también encontrarás la url del servidor parse (a menudo en el formato https //parseapi back4app com ) instala el sdk de python de parse en tu entorno flask ejecutando pip install parse inicializa parse en tu aplicación flask crea un archivo (por ejemplo, parse config py ) en un directorio llamado app o donde sea que almacenes tus 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" luego, en su archivo principal de la aplicación flask (por ejemplo, app py ), puede importar módulos de la aplicación flask junto con su configuración de 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 al completar este paso, ha establecido una conexión segura entre sus rutas front end de flask y el backend de back4app todas las solicitudes y transacciones de datos se enrutan de manera segura a través del código python de parse, reduciendo la complejidad de las llamadas rest o graphql manuales (aunque aún puede usarlas cuando sea necesario) paso 2 – configuración de la base de datos creando un modelo de datos antes de comenzar, hablemos sobre la configuración de la base de datos puede diseñar su esquema de datos en el panel de control de back4app o dejar que parse lo cree sobre la marcha por ejemplo, podría crear una clase llamada “todo” con campos como title y iscompleted navegue a la sección “base de datos” en su panel de control de back4app cree una nueva clase (por ejemplo, “todo”) y agregue columnas relevantes, como title (string) y iscompleted (boolean) back4app admite varios tipos de datos, como string , number , boolean , object , date , file , pointer , array , relation , geopoint , y polygon puedes elegir el tipo apropiado para cada campo creando un modelo de datos usando el agente de ia si prefieres un enfoque automatizado, también puedes usar el agente de ia de back4app abre el agente de ia desde tu panel de control de la aplicación describe tu modelo de datos en un lenguaje simple (por ejemplo, “crea una clase todo con campos de título y iscompleted en back4app ”) deja que el agente de ia cree el esquema por ti lectura y escritura de datos usando sdk en flask, puedes crear y obtener datos importando parse desde tu parse config py inicialización 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 archivo de la aplicación flask maneja solicitudes http para crear y leer elementos todo en tu base de datos back4app lectura y escritura de datos usando rest api si prefieres llamadas rest directas, puedes probar con curl desde la línea de comandos 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 lectura y escritura de datos usando graphql api del mismo modo, back4app proporciona un endpoint graphql por ejemplo mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } trabajando con consultas en vivo (opcional) si necesitas actualizaciones en tiempo real , back4app proporciona consultas en vivo en un escenario de flask, normalmente usarías una biblioteca de suscripción del lado del cliente o del servidor que pueda mantener una conexión websocket con el servidor de consultas en vivo de back4app habilitar consultas en vivo en tu panel de back4app bajo la configuración del servidor usar un cliente parse livequery que se conecte a wss\ //your subdomain here b4a io y escuche eventos de crear/actualizar/eliminar paso 3 – aplicando seguridad con acls y clps breve resumen back4app proporciona listas de control de acceso (acls) y permisos a nivel de clase (clps) para restringir datos las acls se aplican a objetos individuales, mientras que los clps se aplican a toda la clase esto te ayuda a restringir o permitir operaciones de lectura/escritura por usuario, rol o el público configurando permisos a nivel de clase ve a tu panel de back4app , selecciona tu aplicación y abre la sección de base de datos selecciona una clase (por ejemplo, “todo”) abre la pestaña de permisos a nivel de clase configura tus valores predeterminados, como “requiere autenticación” o “sin acceso ” configurando acls en código puedes aplicar acls en el código de 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 paso 4 – escribiendo funciones de cloud code por qué cloud code cloud code es perfecto para ejecutar código python (o javascript en otros escenarios) del lado del servidor, por lo que no tienes que alojar tu propia infraestructura puedes ejecutar tareas como validar datos, realizar cálculos complejos o integrarte con servicios externos directamente desde el servidor de parse función de ejemplo debido a que el entorno de cloud code predeterminado para back4app utiliza node js, escribirías tu cloud code en javascript sin embargo, aún puedes activar estos scripts del lado del servidor desde tu aplicación flask por ejemplo, una función de cloud de node js podría verse así main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); despliegue usa el back4app cli https //www back4app com/docs/local development/parse cli para desplegar tu 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, puedes desplegar a través del dashboard de back4app pegando tu código js en cloud code > functions y haciendo clic en “desplegar ” llamando a tu función en flask, puedes llamar a esa función en la nube 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 paso 5 – configuración de la autenticación habilitar o configurar la autenticación de usuarios en el panel de back4app back4app aprovecha la user clase por defecto parse maneja el hash de contraseñas, los tokens de sesión y el almacenamiento seguro puedes gestionar estas características en tu app settings ejemplos 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 inicio de sesión social back4app y parse pueden integrarse con proveedores sociales como google, apple o facebook los detalles de configuración varían, así que consulta la documentación de inicio de sesión social de parse https //www back4app com/docs/platform/sign in with apple paso 6 – manejo del almacenamiento de archivos configurando el almacenamiento de archivos puedes subir archivos a tu base de datos de parse desde flask creando un parse file() objeto en el entorno basado en nodos, o puedes usar llamadas rest directas desde python si almacenas referencias a estos archivos en tus clases, se vuelven fácilmente recuperables @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 ejemplo después de subir un archivo, recibirás una url de archivo que puedes almacenar en tu base de datos luego puedes renderizar o referenciar ese archivo en tu plantilla html según sea necesario paso 7 – verificación de correo electrónico y restablecimiento de contraseña descripción general la verificación de correo electrónico asegura direcciones de correo válidas, y el restablecimiento de contraseña ayuda a los usuarios a recuperar el acceso a la cuenta de manera segura configuración del panel de control de back4app ve a tu configuración de correo electrónico en el panel de control de back4app habilita la verificación de correo electrónico y configura las plantillas de correo electrónico habilita el restablecimiento de contraseña para enviar enlaces de recuperación de contraseña al correo electrónico del usuario código/implementación una vez habilitado, cualquier nuevo usuario que se registre con un correo electrónico recibe un enlace de verificación para el restablecimiento de contraseña, puedes llamar a los métodos integrados de parse a través de rest o desde tus rutas de flask paso 8 – programación de tareas con trabajos en la nube qué hacen los trabajos en la nube los trabajos en la nube te permiten programar tareas en segundo plano como limpiar datos o enviar correos electrónicos periódicos por ejemplo, puedes eliminar registros antiguos todos los días sin intervención del usuario ejemplo // 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); } }); luego, desde tu panel de control de back4app ve a configuración de la aplicación > configuración del servidor > trabajos en segundo plano programa este trabajo para que se ejecute diariamente o en el intervalo que prefieras paso 9 – integrando webhooks definición webhooks permiten que tu aplicación back4app envíe datos a servicios externos siempre que ocurran ciertos desencadenantes esto es útil para integraciones con pasarelas de pago, slack, análisis o cualquier servicio de terceros configuración navega a la configuración de webhooks en tu panel de back4app > más > webhooks agrega un nuevo webhook establece el endpoint (por ejemplo, https //your external service com/webhook endpoint https //your external service com/webhook endpoint ) selecciona los desencadenantes para los cuales se activará el webhook ejemplo si deseas notificar a un canal de slack cada vez que se crea un nuevo registro en “todo,” establece la url del webhook de slack luego, cada vez que se guarda un nuevo todo, slack recibirá una solicitud post que contiene sus detalles paso 10 – explorando el panel de administración de back4app la aplicación de administración de back4app proporciona una interfaz fácil de usar para los miembros no técnicos de tu equipo es una interfaz centrada en el modelo para operaciones crud y tareas a nivel empresarial dónde encontrarlo ve a tu panel de aplicaciones selecciona más > aplicación administrativa y habilítala crea un usuario administrador y elige un subdominio para alojar el panel una vez habilitado, puedes iniciar sesión con tus credenciales de administrador para gestionar los datos de manera más conveniente—sin escribir puntos finales o consultas personalizadas en tu código python conclusión al seguir este tutorial completo, has creado un backend seguro para una aplicación flask en back4app configurado una base de datos con esquemas de clase, tipos de datos y relaciones integrado consultas en tiempo real (live queries) para actualizaciones de datos inmediatas aplicado medidas de seguridad utilizando acls y clps para proteger y gestionar el acceso a los datos implementado funciones de cloud code para ejecutar lógica de negocio personalizada en el lado del servidor configurado la autenticación de usuarios con soporte para verificación de correo electrónico y restablecimiento de contraseñas gestionado cargas de archivos y recuperación, con controles de seguridad de archivos opcionales programado trabajos en la nube para tareas automatizadas en segundo plano usado webhooks para integrarse con servicios externos explorado el panel de administración de back4app para la gestión de datos con un sólido framework de backend flask que puede devolver archivos de plantilla renderizados (si se desea) y una robusta configuración de back4app, ahora estás equipado para desarrollar aplicaciones ricas en características, escalables y seguras puedes ejecutar tu flask run comando para iniciar el servidor de desarrollo y continuar programando la línea de comandos las tareas se vuelven sencillas con métodos post def rutas que aceptan cargas útiles json próximos pasos construir una aplicación flask lista para producción ampliando este backend para manejar modelos de datos más complejos, estrategias de caché y optimizaciones de rendimiento integrar características avanzadas como flujos de autenticación especializados, control de acceso basado en roles o apis externas (como pasarelas de pago) consulta la documentación oficial de back4app para profundizar en seguridad avanzada, ajuste de rendimiento y análisis de registros explora otros tutoriales sobre aplicaciones de chat en tiempo real, paneles de iot o servicios basados en ubicación puedes combinar las técnicas aprendidas aquí con apis de terceros para crear aplicaciones complejas del mundo real