Quickstarters
Feature Overview
Comment construire un backend pour SwiftUI ?
42 min
introduction dans ce tutoriel, vous apprendrez à construire un backend complet pour une swiftui application ios en utilisant back4app nous vous montrerons comment intégrer le sdk parse swift dans votre projet swiftui et tirer parti des fonctionnalités clés de back4app—comme 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—pour créer un backend sécurisé et évolutif cette approche vous aide à stocker des données en toute sécurité, à exécuter des opérations côté serveur sans configurer votre propre infrastructure, et à faire évoluer facilement votre application ios ou votre application web selon vos besoins 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 de votre propre serveur et base de données à la fin, vous comprendrez comment construire un backend pour swiftui qui peut être étendu à un environnement de production ou intégré avec une logique et des api personnalisées commençons à créer un backend robuste et évolutif avec un minimum de frais généraux! prérequis 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 swiftui de base vous aurez besoin de xcode installé sur votre machine et d'un projet de base swiftui ou ios configuré swift package manager ou cocoapods pour ajouter le sdk parse swift documentation du sdk parse swift https //github com/netreconlab/parse swift familiarité avec swift et swiftui si vous êtes nouveau dans swiftui, consultez la documentation swiftui d'apple https //developer apple com/documentation/swiftui avant de commencer assurez vous que tout cela est en place avant de commencer avoir votre projet back4app configuré et votre environnement swiftui 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 swiftui 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, “swiftui 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 swift 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 swiftui à back4app implique d'installer le sdk parse swift 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é et clés” de votre application pour trouver votre id d'application et clé client (ou clé javascript) vous trouverez également l' url du serveur parse (souvent au format https //parseapi back4app com ) installez le sdk parse swift si vous utilisez swift package manager , ouvrez votre projet dans xcode et ensuite fichier → ajouter des paquets → entrez l'url https //github com/netreconlab/parse swift git choisissez “jusqu'à la prochaine version majeure” dans les règles de version et confirmez si vous utilisez cocoapods pod 'parseswiftog' initialisez parse dans votre application par exemple, dans votre app struct @main struct myapp app { init() { do { try await parseswift initialize( applicationid "your app id", clientkey "your client key", serverurl url(string "https //parseapi back4app com")! ) } catch { print("error initializing parse \\(error)") } } var body some scene { windowgroup { contentview() } } } en complétant cette étape, vous avez établi une connexion sécurisée entre votre interface swiftui et le backend back4app toutes les demandes et transactions de données sont gérées par le sdk parse swift, 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 swift intégré, vous pouvez maintenant commencer à sauvegarder et à récupérer des données voici un simple parseobject exemple supposons que nous ayons une todo structure import parseswift struct todo parseobject { // parseobject conformance var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // custom properties var title string? var iscompleted bool? } sauvegarder un nouveau todo func createtodoitem(title string, iscompleted bool) async { var todo = todo() todo title = title todo iscompleted = iscompleted do { let savedtodo = try await todo save() print("todo saved successfully \\(savedtodo)") } catch { print("error saving todo \\(error)") } } interroger tous les todos func fetchtodos() async { do { let todos = try await todo query() find() print("fetched todos \\(todos)") } catch { print("error fetching todos \\(error)") } } alternativement, vous pouvez utiliser les points de terminaison rest de back4app ou graphql 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 graphql mutation { createtodo(input { fields { title "clean the house" iscompleted false } }) { todo { objectid title iscompleted } } } avoir plusieurs options (parse swift sdk, rest, graphql) vous permet de choisir l'approche qui fonctionne le mieux pour votre flux de travail conception de schéma et types de données par défaut, parse permet la création de schéma à la volée , mais vous pouvez également définir vos classes dans le tableau de bord back4app pour plus de contrôle 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 string , number , boolean , object , date , file , pointer , array , relation , geopoint , et polygon vous pouvez choisir le type approprié pour chaque champ back4app fournit également un ai agent qui peut vous aider à concevoir votre modèle de données ouvrez l'ai agent depuis votre tableau de bord d'application décrivez votre modèle de données en langage simple (par exemple, “veuillez créer un nouveau schéma de classe todo ”) laissez l'ai agent générer le schéma pour vous données relationnelles si vous avez des données relationnelles—disons, un catégorie objet qui pointe vers plusieurs todo éléments—vous pouvez utiliser pointeurs ou relations dans parse par exemple struct category parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var name string? } struct todo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var title string? var category pointer\<category>? } func createtodowithcategory(categoryid string, title string) async { var todo = todo() todo title = title // construct pointer let categorypointer = pointer\<category>(objectid categoryid) todo category = categorypointer do { try await todo save() } catch { print("error creating todo with category relationship \\(error)") } } lors de la requête, vous pouvez également inclure des données de pointeur let query = todo query() include("category") do { let todoswithcategory = try await query find() print("todos with category \\(todoswithcategory)") } catch { print("error fetching todos \\(error)") } requêtes en direct pour des mises à jour en temps réel, back4app fournit des requêtes en direct dans votre application swiftui, vous pouvez vous abonner aux changements dans une classe spécifique activer les requêtes en direct dans votre tableau de bord back4app sous paramètres du serveur s'abonner dans le code // example snippet using the parse swift subscription system task { let subscription = try todo query() subscribecallback() // react to events for await event in subscription { switch event { case entered(let todo) print("new todo entered \\(todo)") case updated(let todo) print("todo updated \\(todo)") case left(let todo) print("todo deleted or left subscription \\(todo)") default break } } } chaque fois qu'un todo est créé, mis à jour ou supprimé sur le serveur, votre application est notifiée en temps réel cette fonctionnalité est très pratique pour les applications collaboratives ou dynamiques qui nécessitent une synchronisation immédiate des données étape 3 – application de la sécurité avec les acl et les clp mécanisme de sécurité back4app back4app fournit des listes de contrôle d'accès (acl) et des autorisations au niveau de la classe (clp) pour une sécurité des données robuste cela vous permet 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 des listes de contrôle d'accès (acl) une acl est appliquée à des objets individuels par exemple, pour s'assurer qu'un utilisateur particulier peut lire/écrire un todo func createprivatetodo(title string, user user) async { var todo = todo() todo title = title var acl = parseacl() // grant read/write to the owner only acl setreadaccess(true, for user) acl setwriteaccess(true, for user) todo acl = acl do { let saved = try await todo save() print("private todo saved \\(saved)") } catch { print("error saving private todo \\(error)") } } des autorisations au niveau de la classe (clp) les clp régissent les valeurs par défaut d'une classe entière, telles que si la classe est lisible ou écrivable publiquement, ou si seuls certains rôles peuvent y accéder allez sur le tableau de bord back4app et sélectionnez votre application ouvrez la base de données section, sélectionnez une classe (par exemple, todo ) ouvrez l'onglet des autorisations au niveau de la classe configurez des valeurs par défaut comme « nécessite une authentification » ou « pas d'accès » ces autorisations établissent une base large, tandis que les acl vous permettent d'affiner la sécurité au niveau de l'objet combiner les deux garantit un modèle de sécurité solide pour plus de détails, voir directives de sécurité de l'application https //www back4app com/docs/security/parse security étape 4 – écriture et déploiement des fonctions cloud le code cloud vous permet d'exécuter du code swift (ou javascript) personnalisé côté serveur sans gérer de serveurs c'est idéal pour ajouter de la logique métier, des validations de données, des déclencheurs ou des intégrations backend qui ne devraient pas s'exécuter depuis le client comment ça fonctionne écrire votre code cloud dans un fichier comme main js (javascript) ou tirer parti de l'environnement de code cloud basé sur swift déployer dans votre projet back4app le code s'exécute dans l'environnement de parse server, donc vous n'avez pas besoin de maintenir votre propre serveur appeler votre code cloud depuis le client via le sdk swift, rest ou graphql cas d'utilisation typiques logique métier validations de données complexes, calculs de champs ou intégrations externes déclencheurs de données exécuter de la logique lorsqu'un objet est enregistré, mis à jour ou supprimé sécurité protéger les opérations sensibles du client en les exécutant côté serveur exemple de fonction voici un exemple de javascript cloud code (puisque cloud code utilise principalement js sur back4app) qui calcule la longueur du texte 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 cli installer le back4app cli https //www back4app com/docs/local development/parse cli configurer votre clé de compte b4a configure accountkey déployer cloud code b4a deploy appel de votre fonction depuis swift struct cloudfunction { static func calculatetextlength(text string) async throws > int { do { if let result = try await parsecloud callfunction("calculatetextlength", with \["text" text]) as? \[string any], let length = result\["length"] as? int { return length } } catch { throw error } return 0 } } task { do { let len = try await cloudfunction calculatetextlength(text "hello back4app") print("text length \\(len)") } catch { print("error calling cloud function \\(error)") } } via rest curl x post \\ h "x parse application id your app id" \\ h "x parse rest api key your rest api key" \\ h "content type application/json" \\ d '{"text" "hello back4app"}' \\ https //parseapi back4app com/functions/calculatetextlength étape 5 – configuration de l'authentification utilisateur authentification utilisateur dans back4app back4app utilise la parseuser classe pour gérer l'authentification sécurisée le hachage des mots de passe, les jetons de session et les données sont gérés automatiquement, vous permettant de vous concentrer sur la logique de l'application configuration de l'authentification utilisateur inscription d'un nouvel utilisateur struct user parseuser { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? // required fields var username string? var email string? var emailverified bool? var password string? var authdata \[string \[string string]?]? } func signupuser(username string, password string, email string) async { var newuser = user() newuser username = username newuser password = password newuser email = email do { try await newuser signup() print("user signed up successfully!") } catch { print("error signing up user \\(error)") } } connectez un utilisateur existant func loginuser(username string, password string) async { do { let user = try await user login(username username, password password) print("user logged in \\(user)") } catch { print("error logging in user \\(error)") } } jetons de session sont gérés automatiquement par parse vous pouvez vous déconnecter func logout() async { do { try await user logout() print("user logged out ") } catch { print("error logging out \\(error)") } } intégration de la connexion sociale les intégrations avec google , apple , facebook , etc , sont possibles avec une configuration supplémentaire consultez la documentation sur la connexion sociale https //www back4app com/docs/platform/sign in with apple pour plus de détails vérification par e mail et réinitialisation du mot de passe activez la vérification par e mail dans votre tableau de bord back4app, et configurez les e mails de réinitialisation de mot de passe afin que les utilisateurs puissent récupérer leurs comptes en toute sécurité pour les réinitialisations de mot de passe try await user passwordreset(email "user\@example com") étape 6 – gestion du stockage de fichiers téléchargement et récupération de fichiers parse inclut parsefile pour gérer les téléchargements de fichiers func uploadimage(filedata data) async { let parsefile = parsefile(name "photo jpg", data filedata) do { let savedfile = try await parsefile save() print("file saved at \\(savedfile url ?? "no url")") } catch { print("error uploading file \\(error)") } } attachez le à un parseobject struct photo parseobject { var objectid string? var createdat date? var updatedat date? var acl parseacl? var originaldata data? var imagefile parsefile? } func createphotoobject(filedata data) async { var photo = photo() photo imagefile = parsefile(name "image jpg", data filedata) do { = try await photo save() } catch { print("error saving photo object \\(error)") } } sécurité des fichiers par défaut, les fichiers sont accessibles via une url publique vous pouvez configurer la sécurité des fichiers en utilisant les paramètres du serveur parse https //www back4app com/docs/platform/file storage pour des contrôles de fichiers plus stricts, assurez vous que seuls les utilisateurs authentifiés ou les rôles spécifiés peuvent télécharger ou récupérer des fichiers étape 7 – planification des tâches avec les travaux cloud les travaux cloud vous permettent de planifier et d'exécuter des tâches récurrentes comme le nettoyage des données ou l'envoi d'e mails // main js (javascript cloud code) 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); } }); après le déploiement, planifiez via le tableau de bord back4app sous paramètres du serveur > tâches en arrière plan étape 8 – intégration des webhooks les webhooks permettent à votre application back4app d'envoyer des requêtes http à des services externes (comme stripe) chaque fois que certains événements se produisent cela est utile pour se connecter à des outils tiers ou à d'autres intégrations côté serveur allez dans webhooks dans votre tableau de bord back4app > plus > webhooks ajoutez un point de terminaison (par exemple, https //your service com/webhook ) configurez quels événements (par exemple, nouvel enregistrement dans la classe todo) déclencheront le webhook par exemple, vous pourriez envoyer un message slack chaque fois qu'un utilisateur crée un nouveau todo cela vous aide à garder les services externes synchronisés avec vos données back4app étape 9 – exploration du panneau d'administration back4app l' application d'administration back4app est une interface de gestion basée sur le web pour les utilisateurs non techniques afin d'effectuer des opérations crud sur vos données elle fournit une interface utilisateur conviviale qui est séparée du tableau de bord parse, facilitant ainsi la gestion des données en production activation de l'application d'administration allez dans votre tableau de bord de l'application > plus > application d'administration et cliquez sur “activer l'application d'administration ” créer un utilisateur administrateur , ce qui génère automatiquement un rôle d'administrateur et des classes associées choisissez un sous domaine pour l'interface d'administration, puis connectez vous pour gérer vos données via une interface utilisateur simple de point and click conclusion en suivant ce guide complet, vous avez appris comment construire un backend pour swiftui en utilisant back4app et le sdk parse swift comment stocker des données de manière sécurisée avec des schémas de classe personnalisés et des relations comment intégrer des requêtes en temps réel (requêtes en direct) pour des mises à jour immédiates des données comment appliquer des mesures de sécurité en utilisant des acl et des clp pour protéger et gérer l'accès aux données comment exécuter la logique métier via le cloud code comment gérer le stockage de fichiers , l'authentification et la planification des tâches en arrière plan avec cloud jobs comment intégrer votre application avec des services externes en utilisant des webhooks avec ces compétences, vous pouvez construire une application ios ou une application web qui est facile à gérer, sécurisée et prête à évoluer explorez des fonctionnalités plus avancées—comme des autorisations basées sur les rôles, des notifications push ou un cache avancé vous pouvez également intégrer d'autres api ou adapter votre cloud code pour répondre à des cas d'utilisation spécialisés bonne programmation , et profitez de la création d'applications géniales sur back4app ! prochaines étapes application swiftui prête pour la production étendez ce backend pour gérer des modèles de données plus complexes, le caching et les améliorations de performance fonctionnalités avancées plongez plus profondément dans l'authentification spécialisée, l'accès basé sur les rôles ou les intégrations d'api tierces (comme stripe) explorez la documentation officielle de back4app pour des plongées plus profondes sur la sécurité côté serveur , l'analyse des journaux et l'optimisation avancée des bases de données vérifiez des tutoriels supplémentaires chat en temps réel, services basés sur la localisation ou applications multi locataires—combinez les méthodes apprises ici avec des api externes pour créer des solutions sophistiquées et réelles