Documentation
¶
Overview ¶
Package httpserver provides a Gin-based HTTP server with TLS, HTTP/2, configurable timeouts, trusted proxies, payload size limits, and graceful shutdown.
Basic usage ¶
engine, err := httpserver.NewGin(httpserver.DefaultGinConfig())
if err != nil {
log.Fatal(err)
}
engine.SetupRoutes(func(r *gin.Engine) {
r.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "pong"})
})
})
log.Fatal(engine.Listen())
Graceful shutdown ¶
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
go func() { log.Fatal(engine.Listen()) }()
<-quit
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
_ = engine.Shutdown(ctx)
TLS ¶
cfg := httpserver.DefaultGinConfig() cfg.UseSSL = true cfg.SSLCert = "/etc/ssl/cert.pem" cfg.SSLKey = "/etc/ssl/key.pem" engine, _ := httpserver.NewGin(cfg) log.Fatal(engine.Listen())
Index ¶
- Variables
- type Engine
- func (e *Engine) Addr() string
- func (e Engine) GetPort() uint16
- func (e Engine) IsSSLEnabled() bool
- func (e *Engine) Listen() error
- func (e *Engine) ListenAndServeTLS(certFile, keyFile string) error
- func (e *Engine) Router() *gin.Engine
- func (e *Engine) Server() *http.Server
- func (e *Engine) SetupMiddleware(setup MiddlewareSetup)
- func (e *Engine) SetupRoutes(setup RouteSetup)
- func (e *Engine) Shutdown(ctx context.Context) error
- func (e *Engine) Use(middleware ...gin.HandlerFunc)
- type GinConfig
- type MiddlewareSetup
- type RouteSetup
Constants ¶
This section is empty.
Variables ¶
Functions ¶
This section is empty.
Types ¶
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
Engine wraps Gin engine and implements HttpServer interface
func (Engine) IsSSLEnabled ¶
IsSSLEnabled returns whether SSL is enabled
func (*Engine) ListenAndServeTLS ¶
ListenAndServeTLS starts the server with TLS
func (*Engine) SetupMiddleware ¶
func (e *Engine) SetupMiddleware(setup MiddlewareSetup)
SetupMiddleware applies middleware setup function to the router
func (*Engine) SetupRoutes ¶
func (e *Engine) SetupRoutes(setup RouteSetup)
SetupRoutes applies route setup function to the router
func (*Engine) Use ¶
func (e *Engine) Use(middleware ...gin.HandlerFunc)
Use adds middleware to the router
type GinConfig ¶
type GinConfig struct {
// Basic server config
Host string
Port uint16
DebugMode bool
// Timeouts
ReadTimeout time.Duration
WriteTimeout time.Duration
IdleTimeout time.Duration
// SSL/TLS config
UseSSL bool
SSLCert string
SSLKey string
MinTLSVersion uint16
// HTTP/2 config
EnableHTTP2 bool
// Route handling
NoRouteTo string
NoRouteJSON bool
// Middleware config
UseRecovery bool
TrustedProxies []string
// Request limits
MaxPayloadSize int64
}
GinConfig holds the configuration for creating a new Gin engine
func DefaultGinConfig ¶
func DefaultGinConfig() *GinConfig
DefaultGinConfig returns a GinConfig with sensible defaults
type MiddlewareSetup ¶
MiddlewareSetup is a function type for setting up middleware
type RouteSetup ¶
RouteSetup is a function type for setting up routes