In diesem Kapitel stellen wir Go- und Json-Webprogrammierung vor, um einen API-Webdienst mit Antwortdatentypen in Form einer API zu erstellen.
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}, }
Die obige Student-Struktur wird als Beispieldaten-Slice-Elementtyp verwendet und in der Datenvariablen gespeichert.
Als nächstes erstellen Sie eine user()-Funktion, um den /users-Endpunkt zu verarbeiten. In dieser Funktion gibt es einen Prozess zur Erkennung des Anforderungstyps über die Eigenschaft r.Method(), um herauszufinden, ob der Anforderungstyp Post oder Get oder etwas anderes ist.
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) }
Wenn es sich bei der Anfrage um ein GET (Daten abrufen) handelt, werden die Daten in JSON codiert
als Antwort verwendet.
Die Anweisung w.Header().Set("Content-Type", "application/json") wird für
verwendet.
Bestimmen Sie den Antworttyp, nämlich als JSON. Während r.Write()
Wird verwendet, um Daten als Antwort zu registrieren.
Andernfalls, wenn die Anfrage ungültig ist, wird die Antwort mit
als Fehler festgelegt.
http.Error()-Funktion.
Richten Sie außerdem einen Handler für den /user-Endpunkt ein. Der Unterschied zwischen diesem Endpunkt und
/users oben ist:
Der /users-Endpunkt gibt alle vorhandenen Beispieldaten (Array) zurück.
Der /user-Endpunkt gibt nur ein Datenelement zurück, das aus den Daten
stammt.
Probe basierend auf ihrer ID. An diesem Endpunkt muss der Client
senden
außerdem die ID-Informationen der gesuchten Daten
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) }
Die Methode r.FormValue() wird verwendet, um Formulardaten abzurufen, die gesendet wurden von
Kunde, in diesem Zusammenhang handelt es sich bei den Daten um die ID.
Mithilfe dieser ID wird nach relevanten Daten gesucht. Wenn ja, dann
als Antwort zurückgegeben. Wenn nicht, dann Fehler 400, Bad Request
mit der Meldung „Benutzer nicht gefunden“ zurückgegeben.
Implementieren Sie abschließend die beiden oben genannten Handler.
func main() { http.HandleFunc("/users", users) http.HandleFunc("/user", user) fmt.Println("starting web server at http://localhost:8080/") http.ListenAndServe(":8080", nil) }
Führen Sie das Programm aus, jetzt ist der Webserver live und die Daten können genutzt werden.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3