Erstellen einer einfachen REST-API mit Go

Susan Sarandon
Freigeben: 2024-10-31 22:06:44
Original
554 Leute haben es durchsucht

Building a simple REST API with Go

Go ist eine großartige Sprache für die Systemprogrammierung, aber sie glänzt auch im Web, insbesondere beim Erstellen von REST-APIs. Dieser Leitfaden führt Sie Schritt für Schritt durch die Erstellung einer einfachen REST-API mithilfe der Standardbibliothek von Go. Wir erstellen eine API zum Verwalten einer Serverliste, sodass wir Serverdatensätze hinzufügen, entfernen und anzeigen können. Wir werden auch die neuen Router-Verbesserungen von Go 1.22 für den Methodenabgleich verwenden, was uns sauberere Routen und Handler ermöglicht.

Diese Anleitung setzt voraus, dass Sie über grundlegende Kenntnisse von Go verfügen und es auf Ihrem Computer installiert ist.

Einrichten

Erstellen Sie ein neues Verzeichnis für Ihr Projekt und initialisieren Sie ein Go-Modul:

mkdir server-api
cd server-api
go mod init server-api
Nach dem Login kopieren

Der Kodex

Erstellen Sie eine Datei mit dem Namen main.go. Wir verwenden das Standard-http-Paket von Go – es enthält alles, was wir für eine grundlegende API benötigen.

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "net/http"
)
Nach dem Login kopieren

Lassen Sie uns zunächst definieren, wie ein Server aussieht. Wir halten es einfach – nur eine ID, einen Namen, eine IP-Adresse und eine Region:

type Server struct {
    ID     string `json:"id"`
    Name   string `json:"name"`
    IP     string `json:"ip"`
    Region string `json:"region`
}
Nach dem Login kopieren

Wir speichern unsere Server mithilfe eines Slice im Speicher. In einer echten Anwendung würden Sie wahrscheinlich eine Datenbank verwenden:

var servers = []Server{
    {ID: "srv1", Name: "prod-1", IP: "10.0.1.1", Region: "us-east"},
    {ID: "srv2", Name: "prod-2", IP: "10.0.1.2", Region: "eu-west"},
}
Nach dem Login kopieren

Erstellen des Routers

Als nächstes richten wir unsere Routen ein. Mit Go 1.22 wurde eine neue Routing-Syntax eingeführt, die dies ziemlich einfach macht:

func main() {
    mux := http.NewServeMux()

    mux.HandleFunc("GET /servers", listServers)
    mux.HandleFunc("GET /servers/{id}", showServer)
    mux.HandleFunc("POST /servers", createServer)
    mux.HandleFunc("DELETE /servers/{id}", deleteServer)

    fmt.Println("Server starting on port 8080...")
    log.Fatal(http.ListenAndServe(":8080", mux))
}
Nach dem Login kopieren

Handler

Jetzt implementieren wir jeden Handler. Zuerst alle Server auflisten:

func listServers(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(servers)
}
Nach dem Login kopieren

Einen einzelnen Server anhand der ID abrufen:

func showServer(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    id := r.PathValue("id")

    for _, server := range servers {
        if server.ID == id {
            json.NewEncoder(w).Encode(server)
            return
        }
    }

    http.Error(w, "Server not found", http.StatusNotFound)
}
Nach dem Login kopieren

Neuen Server erstellen:

func createServer(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")

    var server Server
    if err := json.NewDecoder(r.Body).Decode(&server); err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }

    servers = append(servers, server)
    w.WriteHeader(http.StatusCreated)
    json.NewEncoder(w).Encode(server)
}
Nach dem Login kopieren

Und schließlich einen Server löschen:

func deleteServer(w http.ResponseWriter, r *http.Request) {
    id := r.PathValue("id")

    for i, server := range servers {
        if server.ID == id {
            servers = append(servers[:i], servers[i+1:]...)
            w.WriteHeader(http.StatusNoContent)
            return
        }
    }

    http.Error(w, "Server not found", http.StatusNotFound)
}
Nach dem Login kopieren

Verwendung der API

Sobald Sie den Code installiert haben, führen Sie ihn aus:

go run main.go
Nach dem Login kopieren

So interagieren Sie mit jedem Endpunkt mithilfe von cURL:

Alle Server auflisten:

curl localhost:8080/servers
Nach dem Login kopieren

Besorgen Sie sich einen bestimmten Server:

curl localhost:8080/servers/srv1
Nach dem Login kopieren

Server hinzufügen:

curl -X POST localhost:8080/servers   -H "Content-Type: application/json";   -d '{"id":"srv3","name":"prod-3","ip":"10.0.1.3","region":"ap-south"}';
Nach dem Login kopieren

Einen Server löschen:

curl -X DELETE localhost:8080/servers/srv1
Nach dem Login kopieren

Was kommt als nächstes?

Dies ist eine grundlegende API, aber Sie könnten noch viel hinzufügen:

  • Eingabevalidierung
  • Richtige Fehlerbehandlung
  • Persistierende Server mit einer Datenbank wie PostgreSQL
  • Authentifizierung
  • Protokollierung anfordern
  • Unit-Tests

Die Standardbibliothek ist überraschend gut zum Erstellen von APIs geeignet. Es sind zwar mehr Frameworks mit vollem Funktionsumfang verfügbar, aber wenn Sie mit der Standardbibliothek beginnen, können Sie die Grundlagen besser verstehen, ohne dass hinter den Kulissen irgendwelche Zaubertricks passieren.

Das obige ist der detaillierte Inhalt vonErstellen einer einfachen REST-API mit 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!