Quickstarters
Feature Overview
Comment construire un backend pour Flask ?
40 min
introduction dans ce tutoriel, vous apprendrez comment construire un backend pour flask en utilisant back4app flask est un framework backend léger qui gère les requêtes http avec aisance, et il fonctionne efficacement en mode débogage pendant le développement nous allons passer en revue l'intégration des fonctionnalités essentielles de back4app—telles que la gestion de base de données, les fonctions cloud code, les api rest et graphql, l'authentification des utilisateurs, et les requêtes en temps réel (live queries)—pour créer un backend sécurisé, évolutif et robuste pour votre application flask vous verrez également comment la configuration rapide de back4app et son environnement intuitif peuvent réduire considérablement le temps et les efforts par rapport à la configuration manuelle des serveurs et des bases de données nous utiliserons du code python pour connecter flask au serveur parse de back4app en cours de route, vous acquerrez une expérience pratique avec des fonctionnalités clés, y compris des fonctionnalités de sécurité avancées, la planification de tâches avec cloud jobs, et la configuration de webhooks pour des intégrations externes à la fin de ce tutoriel, vous serez bien préparé à améliorer cette configuration de base en une application prête pour la production ou à intégrer facilement une logique personnalisée et des api tierces selon vos besoins prérequis pour compléter ce tutoriel, vous aurez besoin de un compte back4app et un nouveau projet back4app commencer avec back4app https //www back4app com/docs/get started/new parse app si vous n'avez pas de compte, vous pouvez en créer un gratuitement suivez le guide ci dessus pour préparer votre projet environnement de développement flask de base vous pouvez installer flask via pip install flask assurez vous d'avoir python 3 7+ installé sur votre machine pip install parse ce package python permet à votre application flask d'interagir avec le serveur parse de back4app familiarité avec les concepts de python et flask documentation officielle de flask https //flask palletsprojects com/en/2 2 x/ si vous êtes nouveau sur flask, consultez la documentation officielle ou un tutoriel pour débutants avant de commencer assurez vous d'avoir tous ces prérequis en place avant de commencer avoir votre projet back4app configuré et votre environnement flask local prêt vous aidera à suivre plus facilement étape 1 – créer un nouveau projet sur back4app et se connecter créer un nouveau projet la première étape pour construire votre backend flask sur back4app est de créer un nouveau projet si vous ne l'avez pas encore fait, suivez ces étapes connectez vous à votre compte back4app cliquez sur le bouton “nouvelle application” dans votre tableau de bord back4app donnez un nom à votre application (par exemple, “flask backend tutorial”) une fois le projet créé, vous le verrez listé dans votre tableau de bord back4app ce projet est la base de toutes les configurations backend connectez le sdk parse à flask back4app s'appuie sur la plateforme parse pour gérer vos données, fournir des fonctionnalités en temps réel, gérer l'authentification des utilisateurs, et plus encore connecter votre application flask à back4app implique d'installer le parse paquet python et de l'initialiser avec les identifiants de votre tableau de bord back4app récupérez vos clés parse dans votre tableau de bord back4app, accédez à la section “paramètres de l'application” ou “sécurité & clés” pour trouver votre id d'application et clé client (ou clé api rest si nécessaire) vous trouverez également l' url du serveur parse (souvent au format https //parseapi back4app com ) installez le sdk python parse dans votre environnement flask en exécutant pip install parse initialisez parse dans votre application flask créez un fichier (par exemple, parse config py ) dans un répertoire appelé app ou où que vous stockiez vos modules 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" ensuite, dans votre fichier principal de l'application flask (par exemple, app py ), vous pouvez importer les modules de l'application flask ainsi que votre configuration 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 en complétant cette étape, vous avez établi une connexion sécurisée entre vos routes front end flask et le backend back4app toutes les requêtes et transactions de données sont acheminées de manière sécurisée via le code python parse, réduisant la complexité des appels rest ou graphql manuels (bien que vous puissiez toujours les utiliser si nécessaire) étape 2 – configuration de la base de données création d'un modèle de données avant de commencer, parlons de la configuration de la base de données vous pouvez concevoir votre schéma de données dans le tableau de bord back4app ou laisser parse le créer à la volée par exemple, vous pourriez créer une classe nommée “todo” avec des champs comme title et iscompleted naviguez vers la section “base de données” dans votre tableau de bord back4app créez une nouvelle classe (par exemple, “todo”) et ajoutez des colonnes pertinentes, telles que title (string) et iscompleted (boolean) back4app prend en charge divers types de données, comme string , number , boolean , object , date , file , pointer , array , relation , geopoint , et polygon vous pouvez choisir le type approprié pour chaque champ créer un modèle de données en utilisant l'agent ia si vous préférez une approche automatisée, vous pouvez également utiliser l'agent ia de back4app 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) ce fichier d'application flask gère les requêtes http pour créer et lire des éléments todo dans votre base de données back4app lecture et écriture de données en utilisant l'api rest si vous préférez des appels rest directs, vous pouvez tester avec curl depuis la ligne de commande 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 lecture et écriture de données en utilisant l'api graphql de même, back4app fournit un point de terminaison graphql par exemple mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } travailler avec des requêtes en direct (optionnel) si vous avez besoin de mises à jour en temps réel , back4app fournit des requêtes en direct dans un scénario flask, vous utiliseriez généralement une bibliothèque d'abonnement côté client ou côté serveur distincte qui peut maintenir une connexion websocket au serveur de requêtes en direct de back4app activer les requêtes en direct dans votre tableau de bord back4app sous les paramètres du serveur utiliser un client parse livequery qui se connecte à wss\ //your subdomain here b4a io et écoute les événements de création/mise à jour/suppression étape 3 – appliquer la sécurité avec les acl et les clp aperçu rapide back4app fournit des listes de contrôle d'accès (acl) et des autorisations au niveau de la classe (clp) pour sécuriser les données les acl s'appliquent à des objets individuels, tandis que les clp s'appliquent à l'ensemble de la classe cela vous aide à restreindre ou à autoriser les opérations de lecture/écriture par utilisateur, rôle ou le public configuration des autorisations au niveau de la classe allez à votre tableau de bord back4app , sélectionnez votre application et ouvrez la base de données section sélectionnez une classe (par exemple, “todo”) ouvrez les autorisations au niveau de la classe onglet configurez vos paramètres par défaut, tels que “nécessite une authentification” ou “aucun accès ” configuration des acl dans le code vous pouvez appliquer des acl dans le code 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 étape 4 – écriture des fonctions cloud code pourquoi cloud code le cloud code est parfait pour exécuter du code python (ou javascript dans d'autres scénarios) côté serveur, afin que vous n'ayez pas à héberger votre propre infrastructure vous pouvez exécuter des tâches telles que la validation des données, l'exécution de calculs complexes ou l'intégration avec des services externes directement depuis le serveur parse fonction d'exemple parce que l'environnement cloud code par défaut pour back4app utilise node js, vous écririez votre cloud code en javascript cependant, vous pouvez toujours déclencher ces scripts côté serveur depuis votre application flask par exemple, une fonction cloud node js pourrait ressembler à main js parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); déploiement utilisez le back4app cli https //www back4app com/docs/local development/parse cli pour déployer votre 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 alternativement, vous pouvez déployer via le tableau de bord back4app en collant votre code js dans cloud code > functions et en cliquant sur “déployer ” appeler votre fonction dans flask, vous pouvez appeler cette fonction cloud en utilisant 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 étape 5 – configuration de l'authentification activer ou configurer l'authentification des utilisateurs dans le tableau de bord back4app back4app utilise la classe utilisateur par défaut parse gère le hachage des mots de passe, les jetons de session et le stockage sécurisé vous pouvez gérer ces fonctionnalités dans vos paramètres de l'application exemples de code @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 connexion sociale back4app et parse peuvent s'intégrer avec des fournisseurs sociaux comme google, apple ou facebook les détails de configuration varient, alors référez vous aux docs de connexion sociale parse https //www back4app com/docs/platform/sign in with apple étape 6 – gestion du stockage de fichiers configuration du stockage de fichiers vous pouvez télécharger des fichiers dans votre base de données parse depuis flask en créant un parse file() objet dans l'environnement basé sur node, ou vous pouvez utiliser des appels rest directs depuis python si vous stockez des références à ces fichiers dans vos classes, ils deviennent facilement récupérables @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 exemple après avoir téléchargé un fichier, vous recevrez une url de fichier que vous pouvez stocker dans votre base de données vous pouvez ensuite rendre ou référencer ce fichier dans votre modèle html selon vos besoins étape 7 – vérification par e mail et réinitialisation du mot de passe aperçu la vérification par e mail garantit des adresses e mail valides, et la réinitialisation du mot de passe aide les utilisateurs à retrouver l'accès à leur compte de manière sécurisée configuration du tableau de bord back4app allez dans vos paramètres d'e mail dans le tableau de bord back4app activez la vérification par e mail et configurez les modèles d'e mail activez la réinitialisation du mot de passe pour envoyer des liens de récupération de mot de passe à l'e mail de l'utilisateur code/implémentation une fois activé, tout nouvel utilisateur s'inscrivant avec un e mail reçoit un lien de vérification pour la réinitialisation du mot de passe, vous pouvez appeler les méthodes intégrées de parse via rest ou depuis vos routes flask étape 8 – planification des tâches avec des travaux cloud ce que font les travaux cloud les cloud jobs vous permettent de planifier des tâches en arrière plan comme le nettoyage des données ou l'envoi d'e mails périodiques par exemple, vous pouvez supprimer des enregistrements anciens chaque jour sans intervention de l'utilisateur exemple // 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); } }); ensuite, depuis votre tableau de bord back4app allez dans les paramètres de l'application > paramètres du serveur > tâches en arrière plan planifiez cette tâche pour qu'elle s'exécute quotidiennement ou à l'intervalle de votre choix étape 9 – intégration des webhooks définition webhooks permettent à votre application back4app d'envoyer des données à des services externes chaque fois que certains déclencheurs se produisent cela est utile pour les intégrations avec des passerelles de paiement, slack, des analyses ou tout service tiers configuration accédez à la configuration des webhooks dans votre tableau de bord back4app > plus > webhooks ajoutez un nouveau webhook définissez le point de terminaison (par exemple, https //your external service com/webhook endpoint https //your external service com/webhook endpoint ) sélectionnez les déclencheurs pour lesquels le webhook sera activé exemple si vous souhaitez notifier un canal slack chaque fois qu'un nouvel enregistrement est créé dans “todo,” définissez l'url du webhook slack ensuite, chaque fois qu'un nouveau todo est enregistré, slack recevra une requête post contenant ses détails étape 10 – exploration du panneau d'administration back4app l' application d'administration back4app fournit une interface conviviale pour les membres non techniques de votre équipe c'est une interface centrée sur le modèle pour les opérations crud et les tâches de niveau entreprise où le trouver allez sur votre tableau de bord d'application sélectionnez plus > application admin et activez la créez un utilisateur admin et choisissez un sous domaine pour héberger le panneau une fois activé, vous pouvez vous connecter avec vos identifiants admin pour gérer les données plus facilement—sans écrire d'endpoints ou de requêtes personnalisées dans votre code python conclusion en suivant ce tutoriel complet, vous avez créé un backend sécurisé pour une application flask sur back4app configuré une base de données avec des schémas de classe, des types de données et des relations intégré des requêtes en temps réel (live queries) pour des mises à jour de données immédiates appliqué des mesures de sécurité en utilisant des acl et des clp pour protéger et gérer l'accès aux données implémenté des fonctions cloud code pour exécuter une logique métier personnalisée côté serveur mis en place l'authentification des utilisateurs avec prise en charge de la vérification par e mail et des réinitialisations de mot de passe géré les téléchargements de fichiers et la récupération, avec des contrôles de sécurité des fichiers en option planifié des tâches cloud pour des tâches d'arrière plan automatisées utilisé des webhooks pour s'intégrer à des services externes exploré le panneau d'administration back4app pour la gestion des données avec un solide framework backend flask qui peut retourner des fichiers de modèle de rendu (si désiré) et une configuration robuste de back4app, vous êtes maintenant équipé pour développer des applications riches en fonctionnalités, évolutives et sécurisées la ligne de commande les tâches deviennent simples avec méthodes post def des routes qui acceptent des charges utiles json prochaines étapes construire une application flask prête pour la production en étendant ce backend pour gérer des modèles de données plus complexes, des stratégies de mise en cache et des optimisations de performance intégrer des fonctionnalités avancées telles que des flux d'authentification spécialisés, un contrôle d'accès basé sur les rôles ou des api externes (comme des passerelles de paiement) consulter la documentation officielle de back4app pour des plongées plus profondes dans la sécurité avancée, le réglage des performances et l'analyse des journaux explorer d'autres tutoriels sur les applications de chat en temps réel, les tableaux de bord iot ou les services basés sur la localisation vous pouvez combiner les techniques apprises ici avec des api tierces pour créer des applications complexes et réelles