39 lines
1.2 KiB
Go
39 lines
1.2 KiB
Go
// Package server provides a production-ready HTTP server with graceful
|
|
// shutdown, middleware composition, routing, and JSON response helpers.
|
|
//
|
|
// # Server
|
|
//
|
|
// Server wraps http.Server with net.Listener, signal-based graceful shutdown
|
|
// (SIGINT/SIGTERM), and lifecycle hooks. It is configured via functional options:
|
|
//
|
|
// srv := server.New(handler,
|
|
// server.WithAddr(":8080"),
|
|
// server.Defaults(logger),
|
|
// )
|
|
// srv.ListenAndServe()
|
|
//
|
|
// # Router
|
|
//
|
|
// Router wraps http.ServeMux with middleware groups, prefix-based route groups,
|
|
// and sub-handler mounting. It supports Go 1.22+ method-based patterns:
|
|
//
|
|
// r := server.NewRouter()
|
|
// r.HandleFunc("GET /users/{id}", getUser)
|
|
//
|
|
// api := r.Group("/api/v1", authMiddleware)
|
|
// api.HandleFunc("GET /items", listItems)
|
|
//
|
|
// # Middleware
|
|
//
|
|
// Server middleware follows the func(http.Handler) http.Handler pattern.
|
|
// Available middleware: RequestID, Recovery, Logging, CORS, RateLimit,
|
|
// MaxBodySize, Timeout. Use Chain to compose them:
|
|
//
|
|
// chain := server.Chain(server.RequestID(), server.Recovery(logger), server.Logging(logger))
|
|
//
|
|
// # Response helpers
|
|
//
|
|
// WriteJSON and WriteError provide JSON response writing with proper
|
|
// Content-Type headers.
|
|
package server
|