# README
middleware
- HTTP Middleware
Documentation
Official godoc
documentation (with examples) can be found at the Package Registry.
Usage
Add Package Dependency
go get -u github.com/x-ethr/middleware
Import & Implement
main.go
package main
import (
"encoding/json"
"net/http"
"github.com/x-ethr/middleware"
"github.com/x-ethr/middleware/name"
)
func main() {
middlewares := middleware.Middleware()
middlewares.Add(middleware.New().Service().Configuration(func(options *name.Settings) { options.Service = "example-service-name" }).Middleware)
mux := http.NewServeMux()
handler := middlewares.Handler(mux)
mux.HandleFunc("GET /", func(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
value := middleware.New().Service().Value(ctx)
var response = map[string]interface{}{
"value": value,
}
w.WriteHeader(http.StatusOK)
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(response)
})
http.ListenAndServe(":8080", handler)
}
- Please refer to the code examples for additional usage and implementation details.
- See https://pkg.go.dev/github.com/x-ethr/middleware for additional documentation.
Contributions
See the Contributing Guide for additional details on getting started.
# Packages
Package telemetrics sets a context key "telemetry" to telemetry-related value(s) (such as headers) from a given request's context.
Package cors provides middleware for adding CORS handling.
Package envoy includes middleware that stores X-Envoy-[Header] as context value(s).
Package keystore providers interface(s) for retrieving context.Context keys used for various middleware(s).
Package logs provides middleware for setting an [log/slog] logger handler.
Package name provides middleware for setting an "X-Service-Name" response header.
Package path provides middleware for adding request-specific route context.
Package rip provides real-ip information from request callers.
Package servername provides middleware for setting the default "Server" response header.
Package state is for oauth2 providers, and sets a request's [context.Context] key to a randomly generated string value.
Package telemetrics sets a context key "telemetry" to telemetry-related value(s) (such as headers) from a given request's context.
Package timeout is a middleware that cancels ctx after a given timeout and return a 504 Gateway Timeout error to the client.
Package tracing provides middleware for setting a [go.opentelemetry.io/otel/trace.Tracer] context value.
No description provided by the author
Package versioning provides http middleware for setting a [versioning.Version] context value and an "X-Service-Version" header.
# Structs
No description provided by the author
# Interfaces
No description provided by the author