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 gesetzt
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
entnommen wurde
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.
Das obige ist der detaillierte Inhalt vonWebdienst-API-Server in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!