"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Serveur API de service Web en Go

Serveur API de service Web en Go

Publié le 2024-07-31
Parcourir:877

Web Service Api Server in Go

Dans ce chapitre, nous présenterons la programmation Web Go et Json pour créer un service Web API avec des types de données de réponse sous la forme d'une API.

  1. API de création WEB Préparez d’abord quelques exemples de données
package main
import "encoding/json"
import "net/http"
import "fmt"
type student struct {
 ID string
 Name string
 Grade int
}
var data = []student{
 student{"E001", "ethan", 21},
 student{"W001", "wick", 22},
 student{"B001", "bourne", 23},
 student{"B002", "bond", 23},
}

La structure étudiant ci-dessus est utilisée comme exemple de type d'élément de tranche de données, stocké dans la variable de données.
Ensuite, créez une fonction user() pour gérer le point de terminaison /users. Dans cette fonction, il existe un processus de détection du type de requête via la propriété r.Method(), pour savoir si le type de requête est Post ou Get ou autre chose.

func users(w http.ResponseWriter, r *http.Request) {
 w.Header().Set("Content-Type", "application/json")
 if r.Method == "GET" {
 var result, err = json.Marshal(data)
 if err != nil {
 http.Error(w, err.Error(), http.StatusInternalServerError)
 return
 }
 w.Write(result)
 return
 }
 http.Error(w, "", http.StatusBadRequest)
}

Si la requête est un GET (récupérer des données), alors les données sont codées en JSON
utilisé comme réponse.
L'instruction w.Header().Set("Content-Type", "application/json") est utilisée pour
déterminer le type de réponse, à savoir JSON. Pendant que r.Write()
utilisé pour enregistrer des données en réponse.
Sinon, si la requête n'est pas valide, la réponse est définie comme erreur en utilisant
Fonction http.Erreur().
Configurez également un gestionnaire pour le point de terminaison /user. La différence entre ce point de terminaison et
/users ci-dessus est :
Le point de terminaison /users renvoie tous les exemples de données existants (tableau).
Le point de terminaison /user renvoie une seule donnée, extraite des données
échantillon en fonction de son identifiant. À ce point de terminaison, le client doit envoyer
également les informations d'identification des données recherchées

func user(w http.ResponseWriter, r *http.Request) {
 w.Header().Set("Content-Type", "application/json")
 if r.Method == "GET" {
 var id = r.FormValue("id")
 var result []byte
 var err error
 for _, each := range data {
 if each.ID == id {
 result, err = json.Marshal(each)
 if err != nil {
 http.Error(w, err.Error(), http.StatusInternalServerError)
 return
 }
 w.Write(result)
 return
 }
 }
 http.Error(w, "User not found", http.StatusNotFound)
 return
 }
 http.Error(w, "", http.StatusBadRequest)
}

La méthode r.FormValue() est utilisée pour récupérer les données de formulaire envoyées depuis
client, dans ce contexte les données mentionnées sont ID.
En utilisant cet identifiant, les données pertinentes sont recherchées. Si c'est le cas, alors
renvoyé en réponse. Si ce n'est pas le cas, erreur 400, Bad Request
renvoyé avec le message Utilisateur introuvable.
Enfin, implémentez les deux gestionnaires ci-dessus.

func main() {
 http.HandleFunc("/users", users)
 http.HandleFunc("/user", user)
 fmt.Println("starting web server at http://localhost:8080/")
 http.ListenAndServe(":8080", nil)
}

Exécutez le programme, le serveur Web est désormais opérationnel et les données peuvent être consommées.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/sukmarizki04/web-service-api-server-in-go-efl?1 En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3