Einleitung: Warum Go ideal für REST-APIs ist?
Go (Golang) ist eine moderne kompilierte Programmiersprache, die bei Google entwickelt wurde. Sie vereint die hohe Leistung von C++ mit der Einfachheit von Python. Wenn Sie schnell eine REST-API schreiben müssen, ist Go eine der besten Wahlmöglichkeiten. In diesem Artikel erstellen wir in 30 Minuten eine vollwertige REST-API in Go, und zwar nur mit der Standardbibliothek net/http. Sie werden sehen, wie einfach es ist, HTTP-Anfragen zu verarbeiten, sie weiterzuleiten und JSON-Antworten zurückzugeben.
Am Ende des Artikels werden Sie in der Lage sein, Ihre eigene API zu schreiben, die auf einem Server bereitgestellt werden kann. Wir werden keine Drittanbieter-Frameworks verwenden – nur reines Go, was den Code leichtgewichtig und schnell macht.
Schritt 1: Go installieren und ein Projekt erstellen
Go installieren
Wenn Sie Go noch nicht installiert haben, laden Sie die neueste Version von der offiziellen Website herunter. Folgen Sie den Anweisungen für Ihr Betriebssystem. Überprüfen Sie nach der Installation die Version im Terminal:
go versionSie sollten etwas wie go version go1.22.0 linux/amd64 sehen.
Ein Projekt erstellen
Erstellen Sie ein neues Verzeichnis für das Projekt und initialisieren Sie ein Go-Modul:
mkdir go-rest-apicd go-rest-apigo mod init go-rest-apiJetzt ist die Projektstruktur bereit. Wir werden den gesamten Code in einer einzigen Datei main.go schreiben, um das Beispiel einfach zu halten.
Schritt 2: Einfacher HTTP-Server in Go
Beginnen wir mit einem einfachen HTTP-Server. Öffnen Sie die Datei main.go und fügen Sie den folgenden Code hinzu:
package main
import ( "fmt" "log" "net/http")
func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hallo, REST-API auf Go!") })
log.Println("Server gestartet auf Port 8080") log.Fatal(http.ListenAndServe(":8080", nil))}Starten Sie den Server mit dem Befehl go run main.go und öffnen Sie Ihren Browser unter http://localhost:8080. Sie werden eine Willkommensnachricht sehen. Herzlichen Glückwunsch – Ihr erster HTTP-Server in Go läuft!
Code-Aufschlüsselung
http.HandleFunc— registriert einen Handler für die Route "/".http.ListenAndServe— startet den Server auf Port 8080.log.Fatal— gibt einen Fehler aus, wenn der Server nicht starten kann.
Schritt 3: Routing und JSON-Verarbeitung hinzufügen
Jetzt fügen wir Unterstützung für den REST-Stil hinzu: GET, POST, PUT, DELETE. Wir erstellen eine einfache "Datenbank" im Arbeitsspeicher (ein Slice von Structs) und verwalten eine Aufgabenliste (Todo-Liste).
Datenstruktur
Fügen Sie die Beschreibung des Task-Structs und einen globalen Slice zu main.go hinzu:
type Task struct { ID int `json:"id"` Name string `json:"name"`}
var tasks []Taskvar nextID int = 1Routen-Handler
Erstellen wir einen Haupt-Handler, der die HTTP-Methode analysiert und die entsprechende Funktion aufruft:
func tasksHandler(w http.ResponseWriter, r *http.Request) { switch r.Method { case http.MethodGet: getTasks(w, r) case http.MethodPost: createTask(w, r) default: http.Error(w, "Methode nicht erlaubt", http.StatusMethodNotAllowed) }}
func taskHandler(w http.ResponseWriter, r *http.Request) { // ID aus der URL extrahieren idStr := strings.TrimPrefix(r.URL.Path, "/tasks/") id, err := strconv.Atoi(idStr) if err != nil { http.Error(w, "Ungültige Aufgaben-ID", http.StatusBadRequest) return }
switch r.Method { case http.MethodGet: getTask(w, r, id) case http.MethodPut: updateTask(w, r, id) case http.MethodDelete: deleteTask(w, r, id) default: http.Error(w, "Methode nicht erlaubt", http.StatusMethodNotAllowed) }}