httpserver

package
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CORSMiddleware

func CORSMiddleware() gin.HandlerFunc

CORSMiddleware CORS 中间件

func ComposeDecoder added in v1.3.0

func ComposeDecoder[Req any](decoders ...func(*gin.Context, *Req) error) func(*gin.Context, *Req) error

ComposeDecoder 顺序执行多个 decoder。

func ContextFromGin

func ContextFromGin(c *gin.Context) context.Context

ContextFromGin 从 Gin Context 提取 request context 这个 context 包含了 trace_id 和 request_id,可以用于创建 logger 示例用法:

ctx := httpserver.ContextFromGin(c)
logger := logger.FromContext(ctx)
logger.Info("处理用户请求") // 自动包含 trace_id 和 request_id

func DecodeJSON added in v1.3.0

func DecodeJSON[Req any]() func(*gin.Context, *Req) error

DecodeJSON 使用 JSON body 填充请求对象。

func DecodeQuery added in v1.3.0

func DecodeQuery[Req any]() func(*gin.Context, *Req) error

DecodeQuery 使用 query string 填充请求对象。

func DecodeURI added in v1.3.0

func DecodeURI[Req any]() func(*gin.Context, *Req) error

DecodeURI 使用 URI 参数填充请求对象。

func DefaultHealthHandler added in v1.0.2

func DefaultHealthHandler() gin.HandlerFunc

DefaultHealthHandler 默认健康检查处理器

func GetRequestID

func GetRequestID(c *gin.Context) string

GetRequestID 从 context 中获取 request id

func GetTraceID

func GetTraceID(c *gin.Context) string

GetTraceID 从 context 中获取 trace id

func Handle added in v1.3.0

func Handle[Req any, Resp any](fn HandlerFunc[Req, Resp], opts ...HandlerOption) gin.HandlerFunc

Handle 将强类型业务函数适配成通用 HTTP handler。

func HandleJSON added in v1.3.0

func HandleJSON[Req any, Resp any](fn HandlerFunc[Req, Resp], opts ...HandlerOption) gin.HandlerFunc

HandleJSON 将强类型业务函数适配成 JSON HTTP handler。

func HealthHandlerWithManager added in v1.0.2

func HealthHandlerWithManager(manager *HealthCheckManager) gin.HandlerFunc

HealthHandlerWithManager 带管理器的健康检查处理器

func RequestIDMiddleware

func RequestIDMiddleware() gin.HandlerFunc

RequestIDMiddleware 添加 Request ID 的中间件(每个请求唯一)

func TraceIDMiddleware

func TraceIDMiddleware() gin.HandlerFunc

TraceIDMiddleware 添加 Trace ID 的中间件

Types

type Config

type Config struct {
	Host            string
	Port            int
	ReadTimeout     time.Duration
	WriteTimeout    time.Duration
	IdleTimeout     time.Duration
	MaxHeaderBytes  int
	ShutdownTimeout time.Duration

	// 健康检查配置
	EnableHealthCheck bool   // 是否启用健康检查
	HealthCheckPath   string // 健康检查路径,默认为 /health
	HealthCheckPort   int    // 健康检查端口,默认为0(使用主端口)
}

Config 服务器配置

func DefaultConfig

func DefaultConfig() *Config

DefaultConfig 返回默认配置

type CustomHealthChecker added in v1.0.2

type CustomHealthChecker struct {
	// contains filtered or unexported fields
}

CustomHealthChecker 自定义健康检查器

func NewCustomHealthChecker added in v1.0.2

func NewCustomHealthChecker(name string, checker func(ctx context.Context) error) *CustomHealthChecker

NewCustomHealthChecker 创建自定义健康检查器

func (*CustomHealthChecker) CheckHealth added in v1.0.2

func (chc *CustomHealthChecker) CheckHealth(ctx context.Context) error

CheckHealth 执行自定义健康检查

func (*CustomHealthChecker) GetName added in v1.0.2

func (chc *CustomHealthChecker) GetName() string

GetName 获取检查器名称

type DatabaseHealthChecker added in v1.0.2

type DatabaseHealthChecker struct {
	// contains filtered or unexported fields
}

DatabaseHealthChecker 数据库健康检查器

func NewDatabaseHealthChecker added in v1.0.2

func NewDatabaseHealthChecker(name string, db interface {
	Ping() error
}) *DatabaseHealthChecker

NewDatabaseHealthChecker 创建数据库健康检查器

func (*DatabaseHealthChecker) CheckHealth added in v1.0.2

func (dhc *DatabaseHealthChecker) CheckHealth(ctx context.Context) error

CheckHealth 检查数据库健康状态

func (*DatabaseHealthChecker) GetName added in v1.0.2

func (dhc *DatabaseHealthChecker) GetName() string

GetName 获取检查器名称

type ErrorMapper added in v1.3.0

type ErrorMapper func(err error) (status int, body any)

ErrorMapper 负责把业务错误映射成 HTTP 响应。

type HTTPHealthChecker added in v1.0.2

type HTTPHealthChecker struct {
	// contains filtered or unexported fields
}

HTTPHealthChecker HTTP服务健康检查器

func NewHTTPHealthChecker added in v1.0.2

func NewHTTPHealthChecker(name, url string, timeout time.Duration) *HTTPHealthChecker

NewHTTPHealthChecker 创建HTTP服务健康检查器

func (*HTTPHealthChecker) CheckHealth added in v1.0.2

func (hhc *HTTPHealthChecker) CheckHealth(ctx context.Context) error

CheckHealth 检查HTTP服务健康状态

func (*HTTPHealthChecker) GetName added in v1.0.2

func (hhc *HTTPHealthChecker) GetName() string

GetName 获取检查器名称

type HandlerFunc added in v1.3.0

type HandlerFunc[Req any, Resp any] func(ctx context.Context, req Req) (Resp, error)

HandlerFunc 描述强类型请求的业务处理函数。

type HandlerOption added in v1.3.0

type HandlerOption func(*handlerConfig)

HandlerOption 描述 handler 的可选配置。

func WithDecoder added in v1.3.0

func WithDecoder[Req any](decoder func(*gin.Context, *Req) error) HandlerOption

WithDecoder 覆盖默认请求解码器。

func WithEncoder added in v1.3.0

func WithEncoder(encoder func(*gin.Context, int, any)) HandlerOption

WithEncoder 覆盖成功响应编码器。

func WithErrorMapper added in v1.3.0

func WithErrorMapper(mapper ErrorMapper) HandlerOption

WithErrorMapper 为业务错误提供自定义映射。

func WithSuccessStatus added in v1.3.0

func WithSuccessStatus(status int) HandlerOption

WithSuccessStatus 覆盖成功响应状态码。

type HealthCheckManager added in v1.0.2

type HealthCheckManager struct {
	// contains filtered or unexported fields
}

HealthCheckManager 健康检查管理器

func NewHealthCheckManager added in v1.0.2

func NewHealthCheckManager(version string) *HealthCheckManager

NewHealthCheckManager 创建健康检查管理器

func (*HealthCheckManager) AddChecker added in v1.0.2

func (hcm *HealthCheckManager) AddChecker(checker HealthChecker)

AddChecker 添加健康检查器

func (*HealthCheckManager) CheckHealth added in v1.0.2

func (hcm *HealthCheckManager) CheckHealth(ctx context.Context) *HealthStatus

CheckHealth 执行所有健康检查

type HealthChecker added in v1.0.2

type HealthChecker interface {
	CheckHealth(ctx context.Context) error
	GetName() string
}

HealthChecker 健康检查器接口

type HealthStatus added in v1.0.2

type HealthStatus struct {
	Status    string                 `json:"status"`            // healthy, unhealthy
	Timestamp int64                  `json:"timestamp"`         // Unix时间戳
	Version   string                 `json:"version,omitempty"` // 应用版本
	Uptime    int64                  `json:"uptime,omitempty"`  // 运行时间(秒)
	Checks    map[string]interface{} `json:"checks,omitempty"`  // 详细检查结果
	Error     string                 `json:"error,omitempty"`   // 错误信息
}

HealthStatus 健康检查状态

type Hooks added in v1.3.0

type Hooks struct {
	OnStarting         func(context.Context, LifecycleEvent)
	OnStarted          func(context.Context, LifecycleEvent)
	OnServeError       func(context.Context, LifecycleEvent)
	OnShuttingDown     func(context.Context, LifecycleEvent)
	OnShutdownComplete func(context.Context, LifecycleEvent)
}

Hooks 描述服务器生命周期的可选回调。

type LifecycleEvent added in v1.3.0

type LifecycleEvent struct {
	Addr       string
	HealthAddr string
	Err        error
}

LifecycleEvent 描述服务器生命周期事件。

type Option added in v1.3.0

type Option func(*Server)

Option 描述 Server 的可选配置项。

func WithHooks added in v1.3.0

func WithHooks(h Hooks) Option

WithHooks 为服务器注入生命周期 hooks。

func WithModules added in v1.3.0

func WithModules(modules ...RouteModule) Option

WithModules 在构造时批量注册路由模块。

type RouteModule added in v1.3.0

type RouteModule interface {
	RegisterRoutes(r gin.IRoutes)
}

RouteModule 描述一组可注册到 Gin 路由树的模块。

type Server

type Server struct {
	// contains filtered or unexported fields
}

Server HTTP服务器 - 最小化封装

func NewServer

func NewServer(config *Config, opts ...Option) *Server

NewServer 创建新的HTTP服务器

func (*Server) Addr

func (s *Server) Addr() string

Addr 返回服务器地址

func (*Server) Any

func (s *Server) Any(relativePath string, handlers ...gin.HandlerFunc)

Any 注册所有HTTP方法的便利方法

func (*Server) DELETE

func (s *Server) DELETE(relativePath string, handlers ...gin.HandlerFunc)

DELETE 注册DELETE路由的便利方法

func (*Server) EnableHealthCheck added in v1.0.2

func (s *Server) EnableHealthCheck()

EnableHealthCheck 启用健康检查

func (*Server) EnableHealthCheckWithManager added in v1.0.2

func (s *Server) EnableHealthCheckWithManager(manager *HealthCheckManager)

EnableHealthCheckWithManager 启用带管理器的健康检查

func (*Server) Engine

func (s *Server) Engine() *gin.Engine

Engine 返回Gin引擎,用户完全控制

func (*Server) Errors added in v1.3.0

func (s *Server) Errors() <-chan error

Errors 返回服务器运行期错误通道。

func (*Server) GET

func (s *Server) GET(relativePath string, handlers ...gin.HandlerFunc)

GET 注册GET路由的便利方法

func (*Server) GetHealthCheckPath added in v1.0.2

func (s *Server) GetHealthCheckPath() string

GetHealthCheckPath 获取健康检查路径

func (*Server) Group

func (s *Server) Group(relativePath string, handlers ...gin.HandlerFunc) *gin.RouterGroup

Group 创建路由组的便利方法

func (*Server) HEAD

func (s *Server) HEAD(relativePath string, handlers ...gin.HandlerFunc)

HEAD 注册HEAD路由的便利方法

func (*Server) IsRunning

func (s *Server) IsRunning() bool

IsRunning 检查服务器是否正在运行

func (*Server) OPTIONS

func (s *Server) OPTIONS(relativePath string, handlers ...gin.HandlerFunc)

OPTIONS 注册OPTIONS路由的便利方法

func (*Server) PATCH

func (s *Server) PATCH(relativePath string, handlers ...gin.HandlerFunc)

PATCH 注册PATCH路由的便利方法

func (*Server) POST

func (s *Server) POST(relativePath string, handlers ...gin.HandlerFunc)

POST 注册POST路由的便利方法

func (*Server) PUT

func (s *Server) PUT(relativePath string, handlers ...gin.HandlerFunc)

PUT 注册PUT路由的便利方法

func (*Server) RegisterModules added in v1.3.0

func (s *Server) RegisterModules(modules ...RouteModule)

RegisterModules 批量注册路由模块。

func (*Server) RegisterRoutes

func (s *Server) RegisterRoutes(routes func(r *gin.Engine))

RegisterRoutes 使用回调函数注册路由(推荐方式)

func (*Server) Run

func (s *Server) Run() error

Run 启动服务器(阻塞)

func (*Server) RunTLS

func (s *Server) RunTLS(certFile, keyFile string) error

RunTLS 启动HTTPS服务器(阻塞)

func (*Server) RunWithGracefulShutdown

func (s *Server) RunWithGracefulShutdown() error

RunWithGracefulShutdown 启动服务器并自动处理优雅关闭(阻塞)

func (*Server) Serve added in v1.3.0

func (s *Server) Serve(ln net.Listener) error

Serve 使用现成的 listener 启动服务器(阻塞)。

func (*Server) SetHealthCheckPath added in v1.0.2

func (s *Server) SetHealthCheckPath(path string)

SetHealthCheckPath 设置健康检查路径

func (*Server) Shutdown

func (s *Server) Shutdown(ctx context.Context) error

Shutdown 优雅关闭服务器

func (*Server) Start

func (s *Server) Start() error

Start 启动服务器(非阻塞)

func (*Server) Use

func (s *Server) Use(middleware ...gin.HandlerFunc)

Use 添加中间件的便利方法

func (*Server) WaitForShutdown

func (s *Server) WaitForShutdown() error

WaitForShutdown 等待关闭信号并执行优雅关闭

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL