Webdienst-API-Server in Go

PHPz
Freigeben: 2024-07-23 13:36:31
Original
1178 Leute haben es durchsucht

Web Service Api Server in Go

In diesem Kapitel stellen wir Go- und Json-Webprogrammierung vor, um einen API-Webdienst mit Antwortdatentypen in Form einer API zu erstellen.

  1. Web-Erstellungs-API Bereiten Sie zunächst einige Beispieldaten vor
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},
}

Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage