Lorsqu’il s’agit de créer une API, Go est un choix de langage de programmation extrêmement populaire pour créer de puissantes API RESTful. Le langage est super léger, dispose de nombreuses bibliothèques et frameworks différents et est facile à exécuter. L’un des frameworks pris en charge par Go est Gin. Gin est un framework Web écrit en Golang qui offre d’excellentes performances et évolutivité, entre autres fonctionnalités. Selon le site Web de Gin, « Gin propose une API de type Martini, mais avec des performances jusqu’à 40 fois plus rapides que Martini ». Ce didacticiel créera une API REST simple à l’aide de Go et Gin. Le point de terminaison de l’API permettra à un utilisateur de récupérer une cote de solvabilité. Bien sûr, nous ne nous connecterons à aucun système principal pour extraire une cote de crédit, mais utiliserons plutôt un générateur de nombres aléatoires pour générer la cote et la renvoyer à l’utilisateur. Bien que simple, ce tutoriel vous montrera les bases du développement d’API REST avec Go et Gin.
Conditions préalables
Avant de commencer, nous devons nous assurer que quelques conditions préalables sont remplies. Pour suivre et exécuter ce didacticiel, vous devrez :
- Installer Aller
- Avoir un IDE pour éditer votre code
- Installez Postman pour pouvoir tester le point de terminaison
Une fois ces 3 conditions préalables remplies, nous pouvons commencer !
Création du projet de base
Dans le répertoire de votre choix, créez un dossier nommé my-go-rest-api
.
Une fois le nouveau dossier créé, ouvrez un terminal à la racine du dossier afin que les commandes puissent être exécutées pour construire et exécuter notre projet go.
Une fois que votre terminal est pointé vers le répertoire racine de votre projet, exécutez le go mod init
afin que vous puissiez initialiser le projet go et gérer les dépendances.
go mod init example/my-go-rest-api
Enfin, dans le répertoire racine, créez un fichier appelé main.go
. Ce sera le fichier où nous écrivons tout notre code.
Ajout dans le code
Une fois la main.go
Le fichier est créé et nous pouvons y ajouter notre code d’application. Dans un premier temps, nous allons ajouter quelques lignes de code pour importer nos dépendances, notamment notre dépendance pour Gin. En haut du fichier, ajoutez le code suivant :
package main
import (
"math/rand"
"net/http"
"github.com/gin-gonic/gin"
)
Ensuite, sous le imports
code, nous ajouterons nos limites supérieure et inférieure pour générer le « pointage de crédit » et créer un credit_rating
struct pour conserver nos données de notation de crédit.
const creditScoreMin = 500
const creditScoreMax = 900
type credit_rating struct {
CreditRating int `json:"credit_rating"`
}
Une fois les paramètres de notre pointage de crédit définis, nous allons créer une fonction qui générera de manière aléatoire un numéro de pointage de crédit. A l’intérieur de la fonction, qui reçoit un *gin.Context
une cote de crédit sera générée, transmise à la structure credit_rating, puis écrite dans la gin.Context
en tant qu’objet JSON. La fonction implémentée ira sous l’autre code de définition de pointage de crédit et ressemblera à ceci :
func getCreditScore(c *gin.Context) {
var creditRating = credit_rating{
CreditRating: (rand.Intn(creditScoreMax-creditScoreMin) + creditScoreMin)
}
c.IndentedJSON(http.StatusOK, creditRating)
}
Enfin, nous ajouterons une principal fonction où notre application exposera un GET
point final pour /creditscore
et exposez notre service API sur le port 8080 (le port par défaut pour Gin). Le code ressemblera à ceci :
func main() {
router := gin.Default()
router.GET("/creditscore", getCreditScore)
router.Run("localhost:8080")
}
Le code complété est dans le main.go
fichier, combinés ensemble, ressemblera à ceci.
package main
import (
"math/rand"
"net/http"
"github.com/gin-gonic/gin"
)
const creditScoreMin = 500
const creditScoreMax = 900
type credit_rating struct {
CreditRating int `json:"credit_rating"`
}
func getCreditScore(c *gin.Context) {
var creditRating = credit_rating{
CreditRating: (rand.Intn(creditScoreMax-creditScoreMin) + creditScoreMin)
}
c.IndentedJSON(http.StatusOK, creditRating)
}
func main() {
router := gin.Default()
router.GET("/creditscore", getCreditScore)
router.Run("localhost:8080")
}
Exécuter et tester le code
Avec notre code enfin écrit, dans le dossier actuel, exécutez go get
afin d’extraire les packages et les dépendances dans le projet.
Une fois la commande terminée, les dépendances du projet seront disponibles pour notre code lorsque nous l’exécuterons. Maintenant, exécutons notre API Web simple en utilisant le go run
commande dans le répertoire racine de l’application.
Maintenant, notre API est opérationnelle. Vous pouvez envoyer une requête HTTP de test via Postman ou un autre service de votre choix. En adressant une demande à localhost:8080/creditscore
vous devriez voir un 200 OK
code de statut et un pointage de crédit renvoyé par le générateur de nombres aléatoires que nous avons créé dans le getCreditScore
gestionnaire. Pour ce test, aucun corps de requête n’est nécessaire pour la requête entrante.
Emballer
Avec cela, nous avons créé une API RESTful simple en utilisant Go et Gin. Ce code peut ensuite être développé selon les besoins pour créer des API pour vos applications. À l’avenir, vous souhaiterez peut-être sécuriser l’API avec une clé API, intégrer l’API à une passerelle API, vérifier comment votre API est consommée et utilisée, ou générer des revenus grâce à la monétisation de l’API.