Maison >développement back-end >Golang >Serveur API de service Web en Go

Serveur API de service Web en Go

PHPz
PHPzoriginal
2024-07-23 13:36:311242parcourir

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 y a 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. Tandis que r.Write()
utilisé pour enregistrer des données en réponse.
Sinon, si la demande n'est pas valide, la réponse est définie comme erreur en utilisant
Fonction http.Error().
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 final, 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 du 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, mauvaise demande
est revenu 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, maintenant le serveur Web est actif et les données peuvent être consommées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn