„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Webdienst-API-Server in Go

Webdienst-API-Server in Go

Veröffentlicht am 31.07.2024
Durchsuche:833

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},
}

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.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/sukmarizki04/web-service-api-server-in-go-efl?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

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