Quickstarters
Feature Overview
Comment construire un backend pour Golang ?
37 min
introduction dans ce tutoriel, vous apprendrez à construire et tester un backend complet pour golang en utilisant back4app nous vous guiderons à travers l'intégration des fonctionnalités essentielles de back4app—telles que la gestion de base de données, les paramètres de sécurité, l'authentification des utilisateurs, le stockage de fichiers et le cloud code—pour créer un backend sécurisé, flexible et évolutif qui fonctionne bien avec votre serveur http go notre objectif sera d'utiliser les api restful de back4app pour se connecter à la base de données depuis notre client http golang, plutôt qu'un sdk parse dédié, afin d'illustrer comment construire des fonctions de gestion faciles à maintenir pour votre nouveau backend vous verrez comment cette approche réduit la complexité du développement par rapport à la configuration de vos propres serveurs à partir de zéro en vous appuyant sur les requêtes en temps réel de back4app, le stockage de fichiers et les systèmes d'authentification des utilisateurs, vous accélérerez votre processus de création de backend à la fin, vous saurez comment construire un backend golang sécurisé, planifier des tâches automatisées et intégrer des webhooks externes vous serez bien préparé à améliorer cette base en une application prête pour la production ou à ajouter une logique personnalisée si nécessaire prérequis un compte back4app inscrivez vous gratuitement ici https //www back4app com/ un nouveau projet back4app commencer avec back4app https //www back4app com/docs/get started/new parse app environnement de développement go (golang) assurez vous d'avoir go installé sur votre machine vous pouvez trouver des instructions dans la documentation officielle de go https //go dev/ connaissances de base du package http de go et des api restful une familiarité avec la façon d'écrire un gestionnaire de fonction, d'analyser les messages d'erreur, de gérer les requêtes de méthode post et de configurer un serveur http localhost sera utile assurez vous d'avoir ces prérequis en place avant de continuer cette configuration facilitera votre expérience alors que vous découvrirez comment construire un backend pour golang en utilisant back4app étape 1 – création d'un nouveau projet sur back4app et connexion pourquoi un nouveau projet ? créer un nouveau projet back4app est votre première étape c'est là que vous stockerez des données, configurerez le stockage de fichiers, programmerez des fonctions cloud et ajouterez des tâches en arrière plan ce projet backend ancrera toutes les étapes suivantes connectez vous à votre compte back4app cliquez sur “nouvelle application” dans votre tableau de bord back4app nommez votre application (par exemple, “golang backend tutorial”) une fois créée, elle apparaîtra dans votre tableau de bord cette application est maintenant votre backend basé sur back4app connexion via les api rest back4app fournit des api restful pour créer, mettre à jour et supprimer des données en golang, nous utiliserons le client http de la bibliothèque standard de go pour communiquer avec ces points de terminaison localisez votre id d'application et clé api rest en allant dans la section paramètres ou sécurité et clés de votre application back4app vous aurez besoin de ces identifiants dans chaque en tête de requête nous illustrerons cela dans les étapes suivantes lorsque nous nous connecterons à la base de données en utilisant les méthodes post, get et d'autres requêtes http étape 2 – configuration de la base de données création d'un modèle de données pour stocker des données dans back4app, vous définissez des classes (tables) et des colonnes (champs) par exemple, disons que nous voulons une todo classe vous pouvez la créer manuellement dans le tableau de bord de back4app allez dans la base de données section du tableau de bord de votre application créez une nouvelle classe nommée “todo ” ajoutez des colonnes telles que titre (string) et iscompleted (boolean) vous pouvez également laisser le système créer automatiquement des colonnes en envoyant des objets avec de nouveaux champs depuis votre application golang créer un modèle de données en utilisant l'agent ia ouvrez l'agent ia dans votre tableau de bord d'application décrivez votre modèle de données souhaité (par exemple, “veuillez créer une nouvelle classe todo avec un champ titre et un champ iscompleted ”) acceptez le schéma suggéré cette fonctionnalité pratique fait gagner du temps dans la conception de votre schéma de base de données lecture et écriture de données en utilisant l'api rest (exemple golang) voici un exemple de base de la façon de créer (méthode post) et de récupérer (méthode get) des données en utilisant le package http de go supposons que vous ayez votre application id et rest api key comme variables d'environnement package main import ( "bytes" "encoding/json" "fmt" "io/ioutil" "log" "net/http" ) type todo struct { objectid string `json "objectid,omitempty"` title string `json "title,omitempty"` iscompleted bool `json "iscompleted,omitempty"` } func main() { // example create todo newtodo = todo{ title "buy groceries", iscompleted false, } created, err = createtodo(newtodo) if err != nil { log println("error creating todo ", err) } else { log println("created todo with id ", created objectid) } // example fetch todos todos, err = fetchalltodos() if err != nil { log println("error fetching todos ", err) } else { for , t = range todos { log println("fetched todo ", t title, t iscompleted) } } } // createtodo sends a post request to save a new record in the "todo" class func createtodo(todo todo) (todo, error) { // convert struct to json body, = json marshal(todo) // create http request req, err = http newrequest("post", "https //parseapi back4app com/classes/todo", bytes newbuffer(body)) if err != nil { return todo{}, err } // set necessary headers req header set("x parse application id", "your application id") req header set("x parse rest api key", "your rest api key") req header set("content type", "application/json") // execute the request client = \&http client{} resp, err = client do(req) if err != nil { return todo{}, err } defer resp body close() if resp statuscode != http statuscreated && resp statuscode != http statusok { bodybytes, = ioutil readall(resp body) return todo{}, fmt errorf("api error %s", string(bodybytes)) } // parse response var createdtodo todo if err = json newdecoder(resp body) decode(\&createdtodo); err != nil { return todo{}, err } return createdtodo, nil } // fetchalltodos retrieves all todo objects from back4app using get func fetchalltodos() (\[]todo, error) { req, err = http newrequest("get", "https //parseapi back4app com/classes/todo", nil) if err != nil { return nil, err } req header set("x parse application id", "your application id") req header set("x parse rest api key", "your rest api key") client = \&http client{} resp, err = client do(req) if err != nil { return nil, err } defer resp body close() if resp statuscode != http statusok { bodybytes, = ioutil readall(resp body) return nil, fmt errorf("api error %s", string(bodybytes)) } // parse response for "results" key var result struct { results \[]todo `json "results"` } if err = json newdecoder(resp body) decode(\&result); err != nil { return nil, err } return result results, nil } dans ces exemples, nous créons un client http, ajoutons les en têtes nécessaires et gérons les codes de réponse ainsi que les messages d'erreur n'oubliez pas de remplacer your application id et your rest api key par les clés réelles de votre projet back4app lecture et écriture de données en utilisant l'api graphql back4app fournit également un point de terminaison graphql à https //parseapi back4app com/graphql vous pouvez utiliser une bibliothèque cliente go graphql populaire (comme machine box graphql https //github com/machinebox/graphql ) pour effectuer des requêtes ou des mutations cela peut être une approche plus structurée que les appels rest bruts travailler avec des requêtes en direct (optionnel) si vous souhaitez voir des mises à jour en temps réel dans votre application, vous pouvez activer les requêtes en direct dans le tableau de bord back4app golang n'a pas de bibliothèque officielle pour les requêtes en direct parse cependant, vous pouvez implémenter votre propre connexion websocket pour écouter les mises à jour des requêtes en direct depuis wss\ //your subdomain b4a io cette fonctionnalité est utile pour les applications collaboratives nécessitant une synchronisation immédiate des données étape 3 – application de la sécurité avec les acl et les clp aperçu back4app fournit des listes de contrôle d'accès (acl) et des autorisations au niveau de la classe (clp) pour protéger vos données les acl sont définies sur chaque objet, tandis que les clp définissent des règles générales pour une classe entière autorisations au niveau de la classe allez dans la base de données de votre application dans back4app sélectionnez une classe (par exemple, todo ) cliquez sur autorisations au niveau de la classe et définissez l'accès en lecture/écriture pour différents rôles d'utilisateur ou l'accès public acl vous pouvez passer une acl lors de la création ou de la mise à jour d'un objet via des appels rest cela garantit que seuls certains utilisateurs ou rôles peuvent lire/écrire les données pour plus de détails, visitez les directives de sécurité de l'application https //www back4app com/docs/security/parse security étape 4 – écriture de fonctions cloud code pourquoi cloud code le cloud code vous permet d'exécuter des fonctions côté serveur, des déclencheurs ou des validations—sans gérer vos propres serveurs vous pouvez ajouter une logique métier avancée ou intégrer des api externes depuis le côté serveur exemple de fonction cloud un exemple simple est une fonction qui calcule la longueur du texte dans votre main js fichier sur le tableau de bord back4app parse cloud define('calculatetextlength', async (request) => { const { text } = request params; if (!text) { throw new error('no text provided'); } return { length text length }; }); déploiement déployez cloud code en utilisant l'une des méthodes suivantes back4app cli tableau de bord back4app sous cloud code > fonctions collez votre code dans l'éditeur main js et cliquez sur déployer appel des fonctions cloud depuis golang vous pouvez appeler une fonction cloud via rest depuis votre client http func callcalculatetextlength(txt string) (int, error) { body, = json marshal(map\[string]string{"text" txt}) req, err = http newrequest("post", "https //parseapi back4app com/functions/calculatetextlength", bytes newbuffer(body)) if err != nil { return 0, err } // headers req header set("x parse application id", "your application id") req header set("x parse rest api key", "your rest api key") req header set("content type", "application/json") client = \&http client{} resp, err = client do(req) if err != nil { return 0, err } defer resp body close() if resp statuscode != http statusok { bodybytes, = ioutil readall(resp body) return 0, fmt errorf("api error %s", string(bodybytes)) } var result struct { result map\[string]int `json "result"` } if err = json newdecoder(resp body) decode(\&result); err != nil { return 0, err } return result result\["length"], nil } étape 5 – configuration de l'authentification activer l'authentification des utilisateurs back4app utilise une classe utilisateur pour l'authentification lorsque vous créez un nouvel utilisateur via rest, le backend stockera les identifiants de manière sécurisée et générera un jeton de session 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 '{"username" "alice", "password" "secret123", "email" "alice\@example com"}' \\ https //parseapi back4app com/users utilisez le jeton de session retourné pour les requêtes ultérieures nécessitant des privilèges utilisateur en go, vous enverriez le même type de requête http depuis un client http comme démontré précédemment connexion sociale pour les connexions sociales comme google ou facebook, vous devrez configurer les paramètres oauth sur back4app ces flux impliquent souvent l'échange de jetons consultez la documentation de connexion avec apple / connexion sociale https //www back4app com/docs/platform/sign in with apple pour plus de détails étape 6 – gestion du stockage de fichiers configuration et téléchargement vous pouvez stocker des fichiers sur back4app en les envoyant sous forme de données encodées en base64 ou de multipart/form data 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 '{ "file" { "name" "myimage png", " type" "file", "base64" "ivborw0kggoaaaansuheugaa " } }' \\ https //parseapi back4app com/files/myimage png après le téléchargement, vous pouvez attacher le fichier à un objet en stockant l'url du fichier retourné ou le pointeur du fichier en go, créez une requête http de la même manière—assurez vous simplement d'encoder correctement le contenu du fichier étape 7 – vérification par e mail et réinitialisation du mot de passe importance la vérification par e mail garantit que les utilisateurs contrôlent l'e mail fourni, tandis que la réinitialisation du mot de passe les aide à récupérer leurs comptes les deux fonctionnalités renforcent la sécurité et la confiance activation de la vérification par e mail allez sur votre tableau de bord back4app sous paramètres de l'e mail , activez les e mails de vérification personnalisez vos modèles d'e mail si nécessaire lorsqu'un utilisateur s'inscrit, un e mail de vérification est automatiquement envoyé réinitialisation du mot de passe utilisez le point de terminaison rest requestpasswordreset https //docs parseplatform org/rest/guide/#r passwordreset pour initier une réinitialisation de mot de passe 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 '{"email" "alice\@example com"}' \\ https //parseapi back4app com/requestpasswordreset 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 '{"email" "alice\@example com"}' \\ https //parseapi back4app com/requestpasswordreset 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 '{"email" "alice\@example com"}' \\ https //parseapi back4app com/requestpasswordreset étape 8 – planification des tâches avec les travaux cloud ce que font les travaux cloud les travaux cloud s'exécutent selon un calendrier pour automatiser des tâches telles que le nettoyage des données obsolètes ou l'envoi de bulletins hebdomadaires parse cloud job('cleanupoldtodos', async (request) => { const todo = parse object extend('todo'); const query = new parse query(todo); // remove records older than 30 days // }); déployez ce travail et planifiez le dans votre tableau de bord back4app > paramètres de l'application > paramètres du serveur > travaux en arrière plan étape 9 – intégration des webhooks pourquoi les webhooks les webhooks vous permettent de notifier des services externes lorsque certains événements se produisent par exemple, vous pourriez envoyer des alertes slack lorsque de nouveaux éléments todo sont créés allez à la section des webhooks dans votre tableau de bord back4app configurez votre point de terminaison (comme https //your external service com/webhook ) assignez des déclencheurs (par exemple, aftersave sur todo ) vous pouvez également déclencher des api externes depuis le code cloud en écrivant une requête http client si vous préférez un contrôle direct des événements étape 10 – exploration du panneau d'administration back4app aperçu l'application admin back4app est une interface point and click que vous pouvez partager avec des membres non techniques de l'équipe pour gérer les données activer l'application admin allez à plus > application admin dans votre tableau de bord back4app activez le et créez un utilisateur admin utilisez votre sous domaine choisi pour vous connecter à une interface utilisateur simple pour la manipulation des données cela vous libère de l'écriture de requêtes directes ou de code personnalisé pour effectuer des opérations de base conclusion dans ce guide, vous avez découvert comment construire un backend pour golang en utilisant back4app vous avez exploré comment vous connecter à la base de données via des api restful, appliquer des mesures de sécurité avec des acl et des clp, exécuter des tâches planifiées avec des cloud jobs, intégrer des services externes à l'aide de webhooks, et configurer l'authentification des utilisateurs et le stockage de fichiers avec le package http de go et les fonctionnalités robustes de back4app, vous pouvez créer un backend puissant qui fait gagner du temps et évolue sans effort maintenant que vous avez maîtrisé les bases, vous pouvez étendre la logique de votre fonction de gestionnaire golang, vous connecter à de nouveaux points de terminaison api et construire une application riche qui répond à vos besoins prochaines étapes affinez votre application golang ajoutez des fonctionnalités avancées comme l'accès basé sur les rôles, ou optimisez votre serveur http pour la production en savoir plus sur les requêtes en temps réel intégrez des requêtes en direct pour des applications collaboratives explorez la documentation avancée de back4app affinez vos acl, journaux et analyses incorporez des api tierces utilisez le cloud code ou des webhooks directs pour étendre la fonctionnalité de votre backend