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.
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!