32 lines
943 B
Go
32 lines
943 B
Go
// Package apiserver implementiert Core API-01: das REST-Grundgerüst mit
|
|
// URL-Versionierung, einheitlichem Fehlerformat und Middleware-Kette
|
|
// (Auth, Tenant-/Benutzerkontext, Logging).
|
|
package apiserver
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
)
|
|
|
|
// errorBody ist das EINE Fehlerschema fuer alle Endpunkte unter /api/{version}/
|
|
// (Akzeptanzkriterium 2).
|
|
type errorBody struct {
|
|
Error struct {
|
|
Code string `json:"code"`
|
|
Message string `json:"message"`
|
|
} `json:"error"`
|
|
}
|
|
|
|
// WriteError schreibt einen Fehler im einheitlichen Schema. code ist ein
|
|
// stabiler, maschinenlesbarer Bezeichner (z.B. "unauthenticated"), message
|
|
// ein fuer Menschen lesbarer deutscher Text.
|
|
func WriteError(w http.ResponseWriter, status int, code, message string) {
|
|
var body errorBody
|
|
body.Error.Code = code
|
|
body.Error.Message = message
|
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(status)
|
|
_ = json.NewEncoder(w).Encode(body)
|
|
}
|