Créer une API Web Go avec la nouvelle plate-forme d’applications Digital Ocean


Récemment, Digital Ocean a annoncé son entrée sur le marché du PaaS avec son nouvelle plateforme applicative. Ils hébergent des machines virtuelles (droplets) et des services basés sur Kubernetes depuis des années, mais ils créent maintenant une plate-forme qui consiste simplement en un simple pointer-cliquer pour lancer une application.

J’ai donc décidé de l’essayer. Dans ce didacticiel, nous allons créer une application sur cette plate-forme. J’utiliserai Go pour créer une petite API Web et la faire sauvegarder par une base de données SQLite. Je vais vous montrer les étapes requises et nous verrons à quel point il est (ou non) facile de déployer des applications sur la plate-forme.

Nous allons créer un petit service qui:

  • Prend un nom de ville comme entrée
  • recherches dans une base de données
  • Renvoie le code postal et d’autres informations pour cette ville

Si vous souhaitez suivre ce didacticiel, voici ce dont vous aurez besoin:

Création de votre référentiel

La première chose que nous devons faire est de créer un dépôt sur GitHub. La plate-forme d’application Digital Ocean utilise vos dépôts pour extraire du code et se construire à partir de là.

Maintenant, clonez le référentiel d’échantillons Digital Ocean dans un autre dossier:

git clone https://github.com/digitalocean/sample-golang.git

Maintenant, vous pouvez fourcher ceci. Cependant, comme nous n’allons pas apporter de modifications à ce dépôt et que nous ne voulons pas en retirer des modifications, il s’agit essentiellement d’un nouveau projet. Je vais donc simplement copier les fichiers de ce dépôt dans le mien.

git clone https://github.com/JeremyMorgan/GoZipCodeDigitalOcean.git

cp -r /sample-golang/* /GoZipCodeDigitalOcean

Maintenant, j’ai l’exemple de code dans mon propre dépôt:

Cool, passons maintenant à Github.

git add .
git commmit -m "Initial Commit"
git push origin main

Maintenant, l’exemple de projet est disponible sur mon Github, où je peux me connecter.

Configurer une application Digital Ocean

Aller à https://cloud.digitalocean.com/apps

Et cliquez sur “Lancer votre application”

Ensuite, vous connecterez votre Github à Digital Ocean.

Vous pouvez lui donner l’autorisation à tous vos référentiels, ou seulement à certains (recommandé).

Ensuite, créez votre application et la branche à partir de laquelle vous souhaitez effectuer le déploiement. Je sélectionne «principal» dans mon cas.

Vous pouvez choisir de déployer automatiquement les modifications de code ici. Cliquez sur Suivant.

Sur l’écran suivant, vous pouvez configurer certaines choses. Assurez-vous que Go est détecté et configurez-le en tant que service Web.

Vous pouvez ajouter une base de données ici, mais nous allons l’ignorer et cliquer sur Suivant.

Ensuite, vous sélectionnerez un plan. Les sites statiques sont gratuits mais les services Go ne le sont pas, j’ai donc choisi le plan à 5 $ ici. C’est suffisant pour la preuve de concept et les sites de développement.

Une fois que vous avez cliqué sur Suivant, votre site commencera à se déployer automatiquement.

Et nous sommes debout! Testons-le.

Tester le site de démonstration

Maintenant, notre site de démonstration est opérationnel, mais il n’y a pas grand-chose à regarder:

Vous pouvez utiliser quelque chose comme Facteur pour tester vos itinéraires:

Les itinéraires dans l’exemple d’application sont:

  • /
  • / mis en cache
  • / en-têtes
  • / env
  • /statut

Ok, donc nous sommes prêts à partir. Faisons de cette application une véritable application.

Créer une nouvelle méthode

Tout d’abord, nous allons créer une nouvelle méthode à ajouter à notre application. Il ajoutera un nouvel itinéraire, «/ zip» pour rechercher le code postal et d’autres informations sur la ville. Notre URL ressemblera à

https: // (ourURL) / zip? city = “(ville que nous recherchons)”

Nous allons donc créer une nouvelle méthode:

http.HandleFunc("/zip", func(w http.ResponseWriter, r *http.Request) {
}

Nous vous expliquerons cela plus tard dans le didacticiel.

Construire la base de données

Cette application obtiendra un nom de ville à partir d’un code postal. Nous allons utiliser une base de données pour ce faire.

Pour cette application, nous allons utiliser une base de données SQLite. Je sais, donc cliché, mais bon, ils fonctionnent très bien.

Je vais créer ici une base de données à laquelle sont associés des codes postaux et des informations sur la ville. J’ai téléchargé la version personnelle de cette base de données de codes postaux (CSV) pour ce projet.

La seule chose que j’ai faite est de changer les titres des colonnes:

Vous pouvez les nommer comme vous le souhaitez.

Ensuite, nous utiliserons le Navigateur DB pour SQLite. Vous pouvez l’exécuter sous Windows, Mac ou Linux.

Tout d’abord, nous allons créer une nouvelle base de données:

Et enregistrez-le sous zipcode.db.

Nous devons maintenant importer notre CSV dans la nouvelle base de données.

Allez dans Fichier -> Importer -> Table à partir d’un fichier CSV

Assurez-vous que votre séparateur et vos guillemets sont définis, et vous devriez voir ceci:

Terminez l’importation et cliquez sur «Ecrire les modifications» pour enregistrer les modifications dans la base de données.

Maintenant, nous avons notre base de données.

Construire notre résultat

Ok, maintenant nous avons mis en place notre base de données. Voyons à quoi devrait ressembler notre résultat. J’allais renvoyer juste le code postal d’une ville, mais pourquoi pas plus d’informations si nous l’avons ici?

Voici les informations que j’ai décidé de renvoyer lorsque vous interrogez une ville. Je vais sortir ceci dans JSON.

Créons une structure qui ressemble à ceci:

Remarquez comment dans chacun de ces éléments, j’ai ajouté:

`json:"zip"`

Cette notation vous permet de spécifier à quoi vous souhaitez que le nom de sortie JSON ressemble. Nous pouvons donc tout mettre en minuscules ou même changer complètement le nom si nous le voulons.

Ce sera notre sortie. Remplissons-le!

Construire notre méthode ZIP

Gardez à l’esprit qu’il s’agit d’une démo / comment taper une application. Ce n’est pas quelque chose que vous utiliseriez en production. Nous allons créer cette méthode pour encapsuler la fonctionnalité “ville en code postal”. Cette méthode:

  • Accepter une entrée de chaîne pour un nom de ville
  • Connectez-vous à la base de données SQLite
  • Exécutez une requête dessus
  • Rassemblez les résultats
  • Mettez-les dans une collection
  • Encodez-les en JSON
  • Rends le

Si cela semble beaucoup pour une méthode, vous avez raison. Dans une vraie application, vous voudrez séparer certaines de ces responsabilités, mais cela constitue un bon projet de départ.

Importations

Nous devrons apporter quelques packages pour que cela fonctionne. Ajoutez ce qui suit à votre déclaration d’importation:

Voici les packages que nous utiliserons pour faire fonctionner notre application.

Variables

Ajoutez ces deux déclarations de variables en haut de la méthode:

La première variable, reqCity, est la ville que nous recherchons, et nous l’obtiendrons à partir de l’URL.

Le suivant, les villes, est un ensemble de villes. En effet, il y a souvent plusieurs villes portant le même nom et les grandes villes ont plusieurs codes postaux:

Nous allons donc les stocker dans une collection et la renvoyer.

Connectez-vous à la base de données

Ensuite, nous voulons nous connecter à notre base de données SQLite:

C’est une connexion assez simple. Nous utilisons une bibliothèque SQLite pour ouvrir zipcode.db. S’il n’existe pas ou s’il y a un problème, nous planterons le programme. Nous voulons également différer le DB.Close () afin de fermer la connexion lorsque la méthode est terminée.

Interroger la base de données

Ensuite, nous exécuterons notre requête sur la base de données. La première chose que nous voulons faire est de supprimer les guillemets de la chaîne de notre URL:

searchCity := strings.Trim(reqCity[0], """)

Ce n’est pas toujours obligatoire, mais c’est bien de le nettoyer. Si vous envisagez de créer une vraie application avec cela, vous souhaiterez effectuer une vérification / un nettoyage supplémentaire sur cette chaîne. Pour l’instant, nous allons simplement supprimer les citations.

Ensuite, nous allons exécuter la requête:

Ici, nous exécutons une instruction select sur la base de données et la renvoyons dans Lignes. Cela nous permettra de travailler avec les données une fois retournées.

Reportons les lignes. Fermez également ():

defer rows.Close()

Sucré! Nous avons maintenant (espérons-le) des données avec lesquelles nous pouvons travailler.

Analyse du résultat

Maintenant que nous avons un jeu de résultats, utilisons une boucle for pour l’analyser:

Ici, nous créons une nouvelle instance du ville struct et en utilisant des lignes. Scannez pour scanner chaque ligne et extraire les éléments à placer dans notre structure. S’il y a une erreur avec ceci, nous planterons le programme.

Ensuite, nous ajouterons chaque ville trouvée dans la collection des villes. Idéalement, nous disposerons de données propres.

Nous allons ajouter un peu de gestion des erreurs (encore une fois, il suffit de vider l’application)

Et nous sommes bons!

Emballage et envoi des données

Nous allons emballer ceci et l’envoyer.

Rappelez-vous quand nous avons récupéré la valeur de l’URL et l’avons renvoyée à D’accord? Nous vérifions cela maintenant. Donc, s’il y avait une ville demandée et que nous obtenions un résultat, nous avancerons.

Nous définissons l’en-tête de type de contenu sur application / JSON, puis codons notre collection de villes au format JSON. Et c’est ce qui vous sera rendu.

S’il y a une erreur avec notre requête ou notre résultat, nous vous renvoyons simplement un 404. Essayons-le!

Poussez l’application vers l’océan numérique

Pour déployer cette application sur Digital Ocean, il suffit de s’engager et de pousser:

git add .
git commit -m "Creating our First Deploy"
git push origin main

Et il commencera le déploiement.

Une fois qu’il est construit (ce qui, espérons-le, c’est le cas), vous verrez ceci:

L’URL de votre application sera affichée. Alors, vérifions-le rapidement:

Et il fonctionne! J’ai mis dans ma ville natale (Gaston), et il renvoie mon code postal et d’autres informations sur la ville que j’ai spécifiées!

Vous pouvez également utiliser Postman pour tester ceci:

Et il fonctionne! Il existe également des informations intéressantes disponibles s’il s’agissait d’une vraie application:

Mes pensées sur cette plateforme

Ainsi, avec ce didacticiel, nous avons appris à créer une simple application API Web Go sur la nouvelle plate-forme d’applications de Digital Ocean. Cela était basé sur la lecture de la documentation pendant quelques minutes, le tripotage et le déploiement. Je n’ai pas encore effectué de tests approfondis de la plate-forme, mais c’était si super facile.

Ce que j’ai remarqué jusqu’à présent:

  • Facile à utiliser
  • Aucun logiciel client nécessaire (juste Git!)
  • Simplicité pointer-cliquer
  • Possibilité de personnaliser quand vous en avez besoin
Close Menu