Quickstarters
Feature Overview
Comment construire un backend pour Kotlin ?
39 min
introduction dans ce tutoriel, vous apprendrez à construire un backend complet pour une application android (écrite en kotlin) en utilisant back4app nous allons passer en revue l'intégration des fonctionnalités essentielles de back4app—y compris 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 qui communique sans effort avec votre application android vous verrez également comment la configuration rapide et l'environnement intuitif de back4app peuvent réduire considérablement le temps et les efforts par rapport à la configuration manuelle des serveurs et des bases de données 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 à incorporer 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 un environnement de développement android/kotlin de base assurez vous d'avoir android studio installé sur votre machine vous pouvez suivre la documentation officielle de configuration d'android studio https //developer android com/studio si vous ne l'avez pas encore configuré un minimum d'android 4 0 ou supérieur dans la configuration gradle de votre application typiquement, vous définirez cela dans votre minsdkversion dans le build gradle de votre module une familiarité avec kotlin et les concepts de base d'android documentation pour développeurs android https //developer android com/docs si vous êtes nouveau dans android ou kotlin, 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 android local prêt vous aidera à suivre plus facilement étape 1 – configuration du projet back4app créer un nouveau projet la première étape pour construire votre backend android sur back4app consiste à 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, “android kotlin backend tutorial”) une fois le projet créé, vous le verrez listé dans votre tableau de bord back4app ce projet sera la base de toutes les configurations backend discutées dans ce tutoriel connecter le sdk parse 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 l'intégration de votre application android avec back4app implique d'ajouter les dépendances du sdk android parse à vos fichiers gradle et de les 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” de votre application pour trouver votre id d'application et clé client vous trouverez également l' url du serveur parse (souvent au format https //parseapi back4app com ) ajoutez le sdk parse à vos build gradle fichiers dans votre build gradle racine (niveau projet) allprojects { repositories { maven { url "https //jitpack io" } } } dans votre build gradle au niveau du module (généralement app/build gradle ) dependencies { implementation "com github parse community parse sdk android\ parse\ latest version here" } initialiser parse dans votre application android créer une application personnalisée (par exemple, app kt ) si vous n'en avez pas déjà une package com example app import android app application import com parse parse import com parse parseinstallation class app application() { override fun oncreate() { super oncreate() // initialize parse parse initialize( parse configuration builder(this) applicationid("your app id") // from back4app dashboard clientkey("your client key") // from back4app dashboard server("https //parseapi back4app com/") build() ) // (optional) track statistics around app opens parseinstallation getcurrentinstallation() saveinbackground() } } ensuite, ouvrez votre androidmanifest xml et enregistrez la application personnalisée \<?xml version="1 0" encoding="utf 8"?> \<manifest xmlns\ android="http //schemas android com/apk/res/android" package="com example app"> \<application android\ name=" app" android\ icon="@mipmap/ic launcher" android\ label="@string/app name" android\ usescleartexttraffic="true" > \</application> \</manifest> en complétant cette étape, vous avez établi une connexion sécurisée entre votre interface android (kotlin) et le backend back4app toutes les demandes et transactions de données sont acheminées de manière sécurisée via ce sdk, 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 sauvegarde et requête de données avec votre projet back4app configuré et le sdk parse intégré dans votre application android, vous pouvez maintenant commencer à enregistrer et à récupérer des données ci dessous un exemple utilisant kotlin pour créer et récupérer des données import com parse parseobject import com parse parsequery import com parse savecallback import com parse parseexception // example create a todo item fun createtodoitem(title string, iscompleted boolean) { val todo = parseobject("todo") todo put("title", title) todo put("iscompleted", iscompleted) todo saveinbackground { e parseexception? > if (e == null) { println("todo saved successfully") } else { println("error saving todo ${e localizedmessage}") } } } // example query all todo items fun fetchtodos() { val query = parsequery\<parseobject>("todo") query findinbackground { results, e > if (e == null) { println("fetched todo items ${results size}") } else { println("error fetching todos ${e localizedmessage}") } } } alternativement, vous pouvez utiliser les points de terminaison de l'api rest de back4app 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 back4app fournit également une interface graphql mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } ces options diverses vous permettent d'intégrer les opérations de données de la manière qui convient le mieux à votre processus de développement, que ce soit via le sdk parse, rest ou graphql conception de schéma et types de données par défaut, parse permet la création de schémas à la volée , mais vous pouvez également définir vos classes et types de données dans le tableau de bord back4app pour un meilleur contrôle accédez à 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 titre (string) et estcomplété (boolean) back4app propose un agent ia qui peut vous aider à concevoir votre modèle de données ouvrez l'agent ia depuis votre tableau de bord d'application ou dans le menu décrivez votre modèle de données dans un langage simple (par exemple, “veuillez créer une nouvelle application todo sur back4app avec un schéma de classe complet ”) laissez l'agent ia créer le schéma pour vous utiliser l'agent ia peut vous faire gagner du temps lors de la configuration de votre architecture de données et garantir la cohérence de votre application données relationnelles si vous avez des données relationnelles—disons, un category objet qui pointe vers plusieurs todo éléments—vous pouvez utiliser pointers ou relations dans parse par exemple, ajouter un pointeur à un category // linking a todo to a category with a pointer fun createtaskforcategory(categoryobjectid string, title string) { val todo = parseobject("todo") val categorypointer = parseobject("category") categorypointer objectid = categoryobjectid todo put("title", title) todo put("category", categorypointer) todo saveinbackground { e > if (e == null) { println("created task with category relationship") } else { println("error creating task ${e localizedmessage}") } } } lorsque vous interrogez, vous pouvez également inclure des données de pointeur val query = parsequery getquery\<parseobject>("todo") query include("category") query findinbackground { todos, e > if (e == null) { println("fetched ${todos size} todos with category data") } } cet include("category") appel récupère les détails de la catégorie avec chaque todo, rendant vos données relationnelles facilement accessibles requêtes en direct pour des mises à jour en temps réel, back4app fournit des live queries vous pouvez vous abonner aux changements dans une classe spécifique depuis votre application android activer les requêtes en direct dans votre tableau de bord back4app sous les paramètres du serveur de votre application initialiser une souscription de requête en direct dans votre code import com parse parselivequeryclient import com parse parsequery import com parse subscriptionhandling val parselivequeryclient = parselivequeryclient factory getclient() val parsequery = parsequery\<parseobject>("todo") val subscriptionhandling subscriptionhandling\<parseobject> = parselivequeryclient subscribe(parsequery) subscriptionhandling handleevent(subscriptionhandling event create) { querytodo, todo > println("new todo created ${todo getstring("title")}") } subscriptionhandling handleevent(subscriptionhandling event update) { querytodo, todo > println("todo updated ${todo getstring("title")}") } subscriptionhandling handleevent(subscriptionhandling event delete) { querytodo, todo > println("todo deleted ${todo getstring("title")}") } chaque fois qu'une nouvelle todo est créée, mise à jour ou supprimée, le client reçoit un rappel en temps réel—parfait pour les applications collaboratives ou dynamiques étape 3 – application de la sécurité avec les acl et les clp mécanisme de sécurité back4app back4app prend la sécurité au sérieux en fournissant listes de contrôle d'accès (acl) et permissions au niveau de la classe (clp) ces fonctionnalités vous permettent de restreindre qui peut lire ou écrire des données sur une base par objet ou par classe, garantissant que seuls les utilisateurs autorisés peuvent modifier vos données listes de contrôle d'accès (acl) une acl est appliquée à des objets individuels pour déterminer quels utilisateurs, rôles ou le public peuvent effectuer des opérations de lecture/écriture par exemple fun createprivatetodo(title string, owneruser parseobject) { val todo = parseobject("todo") todo put("title", title) // create an acl granting read/write access only to the owner val acl = com parse parseacl(owneruser) acl publicreadaccess = false acl publicwriteaccess = false todo acl = acl todo saveinbackground { e > if (e == null) { println("saved private todo") } else { println("error ${e localizedmessage}") } } } permissions au niveau de la classe (clps) les clps régissent les permissions par défaut d'une classe entière, telles que si la classe est lisible ou écrivable publiquement allez sur 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 l'onglet des permissions au niveau de la classe configurez vos paramètres par défaut, tels que “nécessite une authentification” pour la lecture ou l'écriture, ou “aucun accès” pour le public étape 4 – écriture de fonctions cloud code le cloud code vous permet d'exécuter du code javascript personnalisé similaire à kotlin sur parse server (téléchargé en tant que js fichiers), sans avoir besoin de gérer l'infrastructure du serveur c'est idéal pour la logique métier, les validations, les déclencheurs et les appels d'api externes comment ça fonctionne vous placez généralement les fonctions javascript, les déclencheurs et tous les modules npm requis dans un main js fichier ce fichier est déployé dans votre projet back4app et s'exécute dans l'environnement parse server cas d'utilisation typiques logique métier validations de données déclencheurs (comme beforesave , aftersave ) application de la sécurité intégrations avec des api tierces déployez votre fonction voici une fonction cloud code simple 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 via le https //www back4app com/docs/local development/parse cli # for linux/mac curl https //raw\ githubusercontent com/back4app/parse cli/back4app/installer sh | sudo /bin/bash \# for windows, download the exe from the releases page configurez et déployez b4a configure accountkey b4a deploy appeler votre fonction depuis votre code android (kotlin) via le sdk parse import com parse parsecloud import com parse functioncallback import com parse parseexception fun calltextlengthfunction(sometext string) { val params = hashmapof("text" to sometext) parsecloud callfunctioninbackground\<map\<string, any>>("calculatetextlength", params) { result, e > if (e == null) { val length = result\["length"] as int println("text length $length") } else { println("error calling cloud code ${e localizedmessage}") } } } vous pouvez également l'appeler via rest ou graphql de manière similaire étape 5 – configuration de l'authentification authentification des utilisateurs dans back4app back4app utilise la classe parse user pour l'authentification parse gère le hachage sécurisé des mots de passe, les jetons de session, et plus encore par défaut configuration de l'authentification des utilisateurs en kotlin, vous pouvez créer un nouvel utilisateur import com parse parseuser fun signupuser(username string, password string, email string) { val user = parseuser() user username = username user setpassword(password) user email = email user signupinbackground { e > if (e == null) { println("user signed up successfully!") } else { println("error signing up user ${e localizedmessage}") } } } connectez un utilisateur existant fun loginuser(username string, password string) { parseuser logininbackground(username, password) { user, e > if (user != null && e == null) { println("user logged in ${user username}") } else { println("error logging in ${e? localizedmessage}") } } } les connexions sociales telles que google, facebook et apple peuvent également être intégrées consultez les docs de connexion sociale https //www back4app com/docs/platform/sign in with apple pour plus de détails gestion des sessions parse gère automatiquement les jetons de session vous pouvez accéder à l'utilisateur actuel val currentuser = parseuser getcurrentuser() if (currentuser != null) { println("currently logged in user ${currentuser username}") } else { println("no user is logged in") } et se déconnecter parseuser logout() étape 6 – gestion du stockage de fichiers téléchargement et récupération de fichiers parse inclut la parsefile classe pour gérer les téléchargements de fichiers import com parse parsefile import com parse parseexception fun uploadimage(file java io file) { val bytes = file readbytes() val parsefile = parsefile(file name, bytes) parsefile saveinbackground { e parseexception? > if (e == null) { println("file saved ${parsefile url}") } else { println("error uploading file ${e localizedmessage}") } } } sécurité des fichiers vous pouvez contrôler qui peut télécharger ou télécharger des fichiers en ajustant les acl et les clp ou en utilisant des paramètres spécifiques aux fichiers dans la configuration du serveur parse étape 7 – vérification par e mail et réinitialisation du mot de passe activer la vérification par e mail dans les paramètres de votre tableau de bord back4app configurer votre adresse d'expéditeur, vos modèles d'e mail ou votre domaine personnalisé si vous le souhaitez utiliser parseuser requestpasswordresetinbackground(email, callback) pour déclencher un flux de réinitialisation de mot de passe dans votre application étape 8 – planification des tâches avec des travaux cloud les travaux cloud vous permettent d'automatiser des tâches routinières comme le nettoyage des données ou l'envoi de notifications périodiques parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo') const query = new parse query(todo) // e g , remove todos older than 30 days const cutoff = new date(date now() 30 24 60 60 1000) query lessthan('createdat', cutoff) const oldtodos = await query find({ usemasterkey true }) await parse object destroyall(oldtodos, { usemasterkey true }) return `deleted ${oldtodos length} old todos ` }) planifiez le travail dans votre tableau de bord back4app sous paramètres du serveur > travaux en arrière plan étape 9 – intégration des webhooks les webhooks permettent à votre application back4app d'envoyer des requêtes http à un service externe chaque fois que certains événements se produisent ajouter un webhook dans votre tableau de bord back4app sous plus > webhooks configurer les déclencheurs (par exemple, après avoir enregistré un nouvel objet) ajouter un point de terminaison url (comme un webhook slack ou stripe) étape 10 – explorer le panneau d'administration back4app l' application d'administration back4app est une interface web conviviale pour les utilisateurs non techniques afin de gérer les données activez le sous tableau de bord de l'application > plus > application d'administration créez votre premier utilisateur administrateur choisissez un sous domaine pour accéder au panneau d'administration connectez vous pour visualiser, modifier ou supprimer facilement des enregistrements de votre base de données conclusion en suivant ce tutoriel complet, vous avez créé un backend sécurisé pour une application android 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 support pour la vérification par e mail et la réinitialisation des mots 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 front end android (kotlin) solide et un backend back4app robuste, vous êtes maintenant bien équipé pour développer des applications riches en fonctionnalités, évolutives et sécurisées continuez à explorer des fonctionnalités plus avancées, intégrez votre logique métier et exploitez la puissance de back4app pour vous faire gagner d'innombrables heures dans l'administration des serveurs et des bases de données bon codage ! prochaines étapes construire une application android 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