Documentation
¶
Index ¶
- func AddController(services di.IServiceCollection, constructor any)
- func AddControllerInstance(services di.IServiceCollection, factory func(di.IServiceProvider) IController)
- func ClearErrorHandlers()
- func GetRegisteredControllerCount() int
- func MakeToGinHandler(services di.IServiceProvider) func(Handler) gin.HandlerFunc
- func MakeToGinHandlers(services di.IServiceProvider) func(...Handler) []gin.HandlerFunc
- func RegisterErrorHandler[T error](handler func(T, ...string) IActionResult)
- func ResetControllers()
- type ActionHandlerFunc
- type ApiError
- type ApiResponse
- type Base64ImageResult
- type BinaryImageResult
- type BoolParamRule
- type ConfigureHostBuilder
- type ConfigureWebHostBuilder
- type ContentResult
- type ControllerBase
- type ControllerOptions
- type CorsOptions
- type CreatedResult
- type ErrorHandler
- type ErrorResult
- type FileResult
- type FloatParamRule
- func (r *FloatParamRule) Max(max float64) *FloatParamRule
- func (r *FloatParamRule) Min(min float64) *FloatParamRule
- func (r *FloatParamRule) Optional() *FloatParamRule
- func (r *FloatParamRule) Positive() *FloatParamRule
- func (r *FloatParamRule) Range(min, max float64) *FloatParamRule
- func (r *FloatParamRule) Required() *FloatParamRule
- func (r *FloatParamRule) Value() float64
- func (r *FloatParamRule) ValueOr(defaultValue float64) float64
- type FrameworkErrorResult
- type Handler
- type HttpContext
- func (c *HttpContext) BadRequest(message string) IActionResult
- func (c *HttpContext) BadRequestWithCode(code, message string) IActionResult
- func (c *HttpContext) BindJSON(target interface{}) (ok bool, result IActionResult)
- func (c *HttpContext) BindQuery(target interface{}) (ok bool, result IActionResult)
- func (c *HttpContext) Conflict(message string) IActionResult
- func (c *HttpContext) Context() context.Context
- func (c *HttpContext) Created(data interface{}) IActionResult
- func (c *HttpContext) Error(statusCode int, code, message string) IActionResult
- func (c *HttpContext) Forbidden(message string) IActionResult
- func (c *HttpContext) FrameworkError(err *errors.Error) IActionResult
- func (c *HttpContext) FrameworkErrorWithStatus(statusCode int, err *errors.Error) IActionResult
- func (c *HttpContext) FromError(err error, defaultMessage ...string) IActionResult
- func (c *HttpContext) FromErrorWithStatus(err error, statusCode int, defaultMessage ...string) IActionResult
- func (c *HttpContext) GetParamErrors() validation.ValidationErrors
- func (c *HttpContext) HasParamErrors() bool
- func (c *HttpContext) InternalError(message string) IActionResult
- func (c *HttpContext) MustBindJSON(target interface{}) IActionResult
- func (c *HttpContext) NoContent() IActionResult
- func (c *HttpContext) NotFound(message string) IActionResult
- func (c *HttpContext) Ok(data interface{}) IActionResult
- func (c *HttpContext) Params() *ParamValidatordeprecated
- func (c *HttpContext) RawCtx() *gin.Context
- func (c *HttpContext) Unauthorized(message string) IActionResult
- func (c *HttpContext) ValidationBadRequest(errs validation.ValidationErrors) IActionResult
- func (c *HttpContext) ValidationBadRequestWithCode(code string, errs validation.ValidationErrors) IActionResult
- type HttpServer
- type IActionResult
- func BadRequest(message string) IActionResult
- func BadRequestWithCode(code, message string) IActionResult
- func Base64Image(imageData []byte, contentType string) IActionResult
- func BinaryImage(imageData []byte, contentType string) IActionResult
- func Conflict(message string) IActionResult
- func Content(statusCode int, content string) IActionResult
- func ContentWithType(statusCode int, content, contentType string) IActionResult
- func Created(data interface{}) IActionResult
- func Error(statusCode int, code, message string) IActionResult
- func File(filePath string) IActionResult
- func FileDownload(filePath, fileName string) IActionResult
- func Forbidden(message string) IActionResult
- func FrameworkError(err *errors.Error) IActionResult
- func FrameworkErrorWithStatus(statusCode int, err *errors.Error) IActionResult
- func FromError(err error, defaultMessage ...string) IActionResult
- func FromErrorWithStatus(err error, statusCode int, defaultMessage ...string) IActionResult
- func InternalError(message string) IActionResult
- func JPEG(imageData []byte) IActionResult
- func JSON(statusCode int, data interface{}) IActionResult
- func NoContent() IActionResult
- func NotFound(message string) IActionResult
- func Ok(data interface{}) IActionResult
- func PNG(imageData []byte) IActionResult
- func Redirect(location string) IActionResult
- func RedirectPermanent(location string) IActionResult
- func ShouldBindHeader[T any](c *HttpContext) (*T, IActionResult)
- func ShouldBindJSON[T any](c *HttpContext) (*T, IActionResult)
- func ShouldBindPlain[T any](c *HttpContext) (*T, IActionResult)
- func ShouldBindQuery[T any](c *HttpContext) (*T, IActionResult)
- func ShouldBindTOML[T any](c *HttpContext) (*T, IActionResult)
- func ShouldBindUri[T any](c *HttpContext) (*T, IActionResult)
- func ShouldBindXML[T any](c *HttpContext) (*T, IActionResult)
- func ShouldBindYAML[T any](c *HttpContext) (*T, IActionResult)
- func Status(statusCode int) IActionResult
- func Unauthorized(message string) IActionResult
- func ValidationBadRequest(errs validation.ValidationErrors) IActionResult
- func ValidationBadRequestWithCode(code string, errs validation.ValidationErrors) IActionResult
- func WebP(imageData []byte) IActionResult
- type IController
- type Int64ParamRule
- func (r *Int64ParamRule) Max(max int64) *Int64ParamRule
- func (r *Int64ParamRule) Min(min int64) *Int64ParamRule
- func (r *Int64ParamRule) NonNegative() *Int64ParamRule
- func (r *Int64ParamRule) Optional() *Int64ParamRule
- func (r *Int64ParamRule) Positive() *Int64ParamRule
- func (r *Int64ParamRule) Range(min, max int64) *Int64ParamRule
- func (r *Int64ParamRule) Required() *Int64ParamRule
- func (r *Int64ParamRule) Value() int64
- func (r *Int64ParamRule) ValueOr(defaultValue int64) int64
- type IntParamRule
- func (r *IntParamRule) In(values ...int) *IntParamRule
- func (r *IntParamRule) Max(max int) *IntParamRule
- func (r *IntParamRule) Min(min int) *IntParamRule
- func (r *IntParamRule) NonNegative() *IntParamRule
- func (r *IntParamRule) Optional() *IntParamRule
- func (r *IntParamRule) Positive() *IntParamRule
- func (r *IntParamRule) Range(min, max int) *IntParamRule
- func (r *IntParamRule) Required() *IntParamRule
- func (r *IntParamRule) Value() int
- func (r *IntParamRule) ValueOr(defaultValue int) int
- type JsonResult
- type M
- type NoContentResult
- type OkResult
- type ParamChain
- func (p *ParamChain[T]) Custom(fn func(T) error) *ParamChain[T]
- func (p *ParamChain[T]) Default(defaultValue T) T
- func (p *ParamChain[T]) Get() (T, error)
- func (p *ParamChain[T]) HasValue() bool
- func (p *ParamChain[T]) Optional() *ParamChain[T]
- func (p *ParamChain[T]) Required() *ParamChain[T]
- func (p *ParamChain[T]) Value() (T, IActionResult)
- func (p *ParamChain[T]) ValueOr(defaultValue T) T
- type ParamValidatordeprecated
- func (v *ParamValidator) Check() IActionResult
- func (v *ParamValidator) Errors() validation.ValidationErrors
- func (v *ParamValidator) HeaderInt(key string) *IntParamRule
- func (v *ParamValidator) HeaderString(key string) *StringParamRule
- func (v *ParamValidator) IsValid() bool
- func (v *ParamValidator) PathInt(key string) *IntParamRule
- func (v *ParamValidator) PathInt64(key string) *Int64ParamRule
- func (v *ParamValidator) PathString(key string) *StringParamRule
- func (v *ParamValidator) QueryBool(key string) *BoolParamRule
- func (v *ParamValidator) QueryFloat(key string) *FloatParamRule
- func (v *ParamValidator) QueryInt(key string) *IntParamRule
- func (v *ParamValidator) QueryInt64(key string) *Int64ParamRule
- func (v *ParamValidator) QueryString(key string) *StringParamRule
- type RedirectResult
- type StaticFileOptions
- type StatusResult
- type StringParamRule
- func (r *StringParamRule) Alpha() *StringParamRule
- func (r *StringParamRule) AlphaNumeric() *StringParamRule
- func (r *StringParamRule) Email() *StringParamRule
- func (r *StringParamRule) In(values ...string) *StringParamRule
- func (r *StringParamRule) Length(min, max int) *StringParamRule
- func (r *StringParamRule) MaxLength(max int) *StringParamRule
- func (r *StringParamRule) MinLength(min int) *StringParamRule
- func (r *StringParamRule) NotEmpty() *StringParamRule
- func (r *StringParamRule) NotIn(values ...string) *StringParamRule
- func (r *StringParamRule) Optional() *StringParamRule
- func (r *StringParamRule) Pattern(pattern, message string) *StringParamRule
- func (r *StringParamRule) Required() *StringParamRule
- func (r *StringParamRule) URL() *StringParamRule
- func (r *StringParamRule) Value() string
- func (r *StringParamRule) ValueOr(defaultValue string) string
- type ValidationErrorResult
- type WebApplication
- func (app *WebApplication) DELETE(pattern string, handlers ...Handler) router.IEndpointConventionBuilder
- func (app *WebApplication) GET(pattern string, handlers ...Handler) router.IEndpointConventionBuilder
- func (app *WebApplication) GetRoutes() []*router.RouteBuilder
- func (app *WebApplication) Group(prefix string, handlers ...Handler) *router.RouteGroupBuilder
- func (app *WebApplication) MapControllers() *WebApplication
- func (app *WebApplication) PATCH(pattern string, handlers ...Handler) router.IEndpointConventionBuilder
- func (app *WebApplication) POST(pattern string, handlers ...Handler) router.IEndpointConventionBuilder
- func (app *WebApplication) PUT(pattern string, handlers ...Handler) router.IEndpointConventionBuilder
- func (app *WebApplication) Run(urls ...string) error
- func (app *WebApplication) RunWithContext(ctx context.Context) error
- func (app *WebApplication) Start(ctx context.Context) error
- func (app *WebApplication) Stop(ctx context.Context) error
- func (app *WebApplication) Use(middleware ...gin.HandlerFunc)
- func (app *WebApplication) UseCors(configure ...func(*CorsOptions)) *WebApplication
- func (app *WebApplication) UseDefaultFiles() *WebApplication
- func (app *WebApplication) UseStaticFiles(configure ...func(*StaticFileOptions)) *WebApplication
- type WebApplicationBuilder
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddController ¶
func AddController(services di.IServiceCollection, constructor any)
AddController 注册控制器工厂以供自动发现。 控制器将在调用 MapControllers() 时作为单例创建。
重要:控制器是单例,必须是无状态的。不要在控制器字段中存储 特定于请求的数据。
用法:
// 使用构造函数 web.AddController(builder.Services, NewUserController)
func AddControllerInstance ¶
func AddControllerInstance(services di.IServiceCollection, factory func(di.IServiceProvider) IController)
AddControllerInstance 注册现有的控制器实例。 当您需要更多地控制控制器创建时使用此方法。
用法:
web.AddControllerInstance(builder.Services, func(sp di.IServiceProvider) web.IController {
return NewUserController(sp)
})
func GetRegisteredControllerCount ¶
func GetRegisteredControllerCount() int
GetRegisteredControllerCount 返回已注册控制器的数量。 这主要用于测试和调试。
func MakeToGinHandler ¶
func MakeToGinHandler(services di.IServiceProvider) func(Handler) gin.HandlerFunc
MakeToGinHandler 创建一个处理器转换器,将服务注入到 HttpContext 中。 此工厂函数捕获服务并返回转换器函数。 支持 ActionHandlerFunc 和 gin.HandlerFunc 两种类型:
- ActionHandlerFunc: func(*HttpContext) IActionResult
- gin.HandlerFunc: func(*gin.Context)
func MakeToGinHandlers ¶
func MakeToGinHandlers(services di.IServiceProvider) func(...Handler) []gin.HandlerFunc
MakeToGinHandlers 创建一个函数,用于转换多个处理器并注入服务。 支持混合使用 ActionHandlerFunc 和 gin.HandlerFunc。
func RegisterErrorHandler ¶
func RegisterErrorHandler[T error](handler func(T, ...string) IActionResult)
RegisterErrorHandler 注册错误类型处理器(泛型版本)。 T: 错误类型,handler: 处理函数。
使用示例:
// 注册自定义错误处理器
web.RegisterErrorHandler[*MyCustomError](func(err *MyCustomError, msg ...string) web.IActionResult {
return web.BadRequest(err.Details)
})
// 注册数据库错误处理器
web.RegisterErrorHandler[*sql.ErrNoRows](func(err *sql.ErrNoRows, msg ...string) web.IActionResult {
return web.NotFound("记录不存在")
})
Types ¶
type ActionHandlerFunc ¶
type ActionHandlerFunc func(*HttpContext) IActionResult
ActionHandlerFunc 是返回 IActionResult 的处理器函数。
type ApiError ¶
type ApiError struct {
Code string `json:"code"` // 错误码
Message string `json:"message"` // 错误消息
Fields []validation.ValidationError `json:"fields,omitempty"` // 验证错误字段列表
Details M `json:"details,omitempty"` // 额外详情(可选)
}
ApiError 表示 API 响应中的错误。
type ApiResponse ¶
type ApiResponse struct {
Success bool `json:"success"`
Data interface{} `json:"data,omitempty"`
Error *ApiError `json:"error,omitempty"`
}
ApiResponse 是标准的 API 响应格式。
type Base64ImageResult ¶
type Base64ImageResult struct {
StatusCode int
ImageData string // Base64 编码的图片
ContentType string // 原始图片内容类型(如 image/png)
}
Base64ImageResult 表示以 base64 格式在 JSON 中返回的图片响应。
func (Base64ImageResult) ExecuteResult ¶
func (r Base64ImageResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type BinaryImageResult ¶
type BinaryImageResult struct {
StatusCode int
ImageData []byte
ContentType string // 如 image/png、image/jpeg
}
BinaryImageResult 表示二进制图片响应。
func (BinaryImageResult) ExecuteResult ¶
func (r BinaryImageResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type BoolParamRule ¶
type BoolParamRule struct {
// contains filtered or unexported fields
}
BoolParamRule 布尔参数规则
func (*BoolParamRule) ValueOr ¶
func (r *BoolParamRule) ValueOr(defaultValue bool) bool
ValueOr 获取值,如果解析失败则返回默认值
type ConfigureHostBuilder ¶
type ConfigureHostBuilder struct {
// contains filtered or unexported fields
}
ConfigureHostBuilder allows configuring the generic host.
func (*ConfigureHostBuilder) ConfigureServices ¶
func (c *ConfigureHostBuilder) ConfigureServices(configure func(di.IServiceCollection)) *ConfigureHostBuilder
ConfigureServices configures services for the host.
type ConfigureWebHostBuilder ¶
type ConfigureWebHostBuilder struct {
// contains filtered or unexported fields
}
ConfigureWebHostBuilder allows configuring the web host.
func (*ConfigureWebHostBuilder) UseShutdownTimeout ¶
func (c *ConfigureWebHostBuilder) UseShutdownTimeout(seconds int) *ConfigureWebHostBuilder
UseShutdownTimeout configures the shutdown timeout. Corresponds to .NET builder.WebHost.UseShutdownTimeout().
func (*ConfigureWebHostBuilder) UseUrls ¶
func (c *ConfigureWebHostBuilder) UseUrls(urls ...string) *ConfigureWebHostBuilder
UseUrls configures the URLs the web server listens on.
type ContentResult ¶
ContentResult 表示纯文本响应。
func (ContentResult) ExecuteResult ¶
func (r ContentResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type ControllerBase ¶
type ControllerBase struct {
Services di.IServiceProvider
}
ControllerBase 为控制器提供通用功能。 在您的控制器中嵌入此结构以访问通用服务。
func NewControllerBase ¶
func NewControllerBase(services di.IServiceProvider) ControllerBase
NewControllerBase 创建一个新的 ControllerBase,使用给定的服务提供者。
type ControllerOptions ¶
type ControllerOptions struct {
// EnableEndpointMetadata 启用 OpenAPI 生成的端点元数据
EnableEndpointMetadata bool
}
ControllerOptions 表示控制器配置选项。
type CorsOptions ¶
type CorsOptions struct {
AllowOrigins []string
AllowMethods []string
AllowHeaders []string
ExposeHeaders []string
AllowCredentials bool
MaxAge time.Duration
}
CorsOptions 表示 CORS 配置选项。 对应 .NET 的 CorsOptions。
type CreatedResult ¶
type CreatedResult struct {
Data interface{}
}
CreatedResult 表示 201 Created 响应。
func (CreatedResult) ExecuteResult ¶
func (r CreatedResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type ErrorHandler ¶
type ErrorHandler func(err error, defaultMessage ...string) IActionResult
ErrorHandler 错误处理器函数类型。 接收错误和默认消息,返回 IActionResult。 如果返回 nil,表示该处理器不处理此错误,继续尝试其他处理器。
type ErrorResult ¶
ErrorResult 表示错误响应。
func (ErrorResult) ExecuteResult ¶
func (r ErrorResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type FileResult ¶
FileResult 表示文件下载响应。
func (FileResult) ExecuteResult ¶
func (r FileResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type FloatParamRule ¶
type FloatParamRule struct {
// contains filtered or unexported fields
}
FloatParamRule 浮点数参数规则
func (*FloatParamRule) Range ¶
func (r *FloatParamRule) Range(min, max float64) *FloatParamRule
Range 范围验证
func (*FloatParamRule) ValueOr ¶
func (r *FloatParamRule) ValueOr(defaultValue float64) float64
ValueOr 获取值,如果解析失败则返回默认值
type FrameworkErrorResult ¶
FrameworkErrorResult 表示框架错误响应。
func (FrameworkErrorResult) ExecuteResult ¶
func (r FrameworkErrorResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type Handler ¶
type Handler interface{}
Handler 表示统一的处理器类型,可以是 ActionHandlerFunc 或 gin.HandlerFunc。 支持两种类型:
- ActionHandlerFunc: func(*HttpContext) IActionResult
- gin.HandlerFunc: func(*gin.Context)
type HttpContext ¶
type HttpContext struct {
// Services 提供对应用程序 DI 容器的访问。
// 使用 di.Get[T](ctx.Services) 来解析服务。
Services di.IServiceProvider
// contains filtered or unexported fields
}
func NewHttpContext ¶
func NewHttpContext(c *gin.Context) *HttpContext
NewHttpContext 从 gin.Context 创建新的 HttpContext。
func (*HttpContext) BadRequest ¶
func (c *HttpContext) BadRequest(message string) IActionResult
BadRequest 返回 400 Bad Request。
func (*HttpContext) BadRequestWithCode ¶
func (c *HttpContext) BadRequestWithCode(code, message string) IActionResult
BadRequestWithCode 返回 400 Bad Request,带有自定义错误码。
func (*HttpContext) BindJSON ¶
func (c *HttpContext) BindJSON(target interface{}) (ok bool, result IActionResult)
BindJSON 将 JSON 请求体绑定到目标对象,失败时返回 BadRequest。 绑定成功时返回 true,否则返回 false。
func (*HttpContext) BindQuery ¶
func (c *HttpContext) BindQuery(target interface{}) (ok bool, result IActionResult)
BindQuery 将查询参数绑定到目标对象,失败时返回 BadRequest。
func (*HttpContext) Conflict ¶
func (c *HttpContext) Conflict(message string) IActionResult
Conflict 返回 409 Conflict。
func (*HttpContext) Created ¶
func (c *HttpContext) Created(data interface{}) IActionResult
Created 返回 201 Created 及数据。
func (*HttpContext) Error ¶
func (c *HttpContext) Error(statusCode int, code, message string) IActionResult
Error 返回自定义错误响应。
func (*HttpContext) Forbidden ¶
func (c *HttpContext) Forbidden(message string) IActionResult
Forbidden 返回 403 Forbidden。
func (*HttpContext) FrameworkError ¶
func (c *HttpContext) FrameworkError(err *errors.Error) IActionResult
FrameworkError 返回框架错误,自动映射 HTTP 状态码。
func (*HttpContext) FrameworkErrorWithStatus ¶
func (c *HttpContext) FrameworkErrorWithStatus(statusCode int, err *errors.Error) IActionResult
FrameworkErrorWithStatus 返回框架错误,带有指定的 HTTP 状态码。
func (*HttpContext) FromError ¶
func (c *HttpContext) FromError(err error, defaultMessage ...string) IActionResult
FromError 智能处理错误,是 web.FromError 的便捷方法。 自动识别错误类型并返回对应的 ActionResult。
使用示例:
user, err := service.GetUser(id)
if err != nil {
return c.FromError(err, "获取用户失败")
}
func (*HttpContext) FromErrorWithStatus ¶
func (c *HttpContext) FromErrorWithStatus(err error, statusCode int, defaultMessage ...string) IActionResult
FromErrorWithStatus 智能处理错误并指定状态码。 对于普通 error 使用指定的状态码,对于 BizError 和 ValidationErrors 忽略状态码。
使用示例:
err := db.Connect()
if err != nil {
return c.FromErrorWithStatus(err, 503, "数据库服务暂时不可用")
}
func (*HttpContext) GetParamErrors ¶
func (c *HttpContext) GetParamErrors() validation.ValidationErrors
GetParamErrors 获取所有参数验证错误。
func (*HttpContext) HasParamErrors ¶
func (c *HttpContext) HasParamErrors() bool
HasParamErrors 检查是否有参数验证错误。
func (*HttpContext) InternalError ¶
func (c *HttpContext) InternalError(message string) IActionResult
InternalError 返回 500 Internal Server Error。
func (*HttpContext) MustBindJSON ¶
func (c *HttpContext) MustBindJSON(target interface{}) IActionResult
MustBindJSON 将 JSON 请求体绑定到目标对象,失败时返回 BadRequest。 这是一个便捷方法,仅返回错误结果。
func (*HttpContext) NoContent ¶
func (c *HttpContext) NoContent() IActionResult
NoContent 返回 204 No Content。
func (*HttpContext) NotFound ¶
func (c *HttpContext) NotFound(message string) IActionResult
NotFound 返回 404 Not Found。
func (*HttpContext) Params
deprecated
func (c *HttpContext) Params() *ParamValidator
Params 创建参数验证器
Deprecated: 使用新的泛型参数 API 代替:web.Path[T], web.Query[T], web.Header[T]
迁移示例:
// 旧 API:
id := c.Params().PathInt("id").Min(1).Value()
// 新 API:
id := web.Path[int](c, "id").Min(1).Value()
新 API 的优势:
- 更简洁:无需 Params() 前缀和 Check() 调用
- 类型安全:使用 Go 泛型,编译时检查类型
- 自动错误处理:验证错误自动收集并返回
- 更好的 IDE 支持:完整的类型提示和自动补全
func (*HttpContext) Unauthorized ¶
func (c *HttpContext) Unauthorized(message string) IActionResult
Unauthorized 返回 401 Unauthorized。
func (*HttpContext) ValidationBadRequest ¶
func (c *HttpContext) ValidationBadRequest(errs validation.ValidationErrors) IActionResult
ValidationBadRequest 返回 400 Bad Request,带有验证错误。
func (*HttpContext) ValidationBadRequestWithCode ¶
func (c *HttpContext) ValidationBadRequestWithCode(code string, errs validation.ValidationErrors) IActionResult
ValidationBadRequestWithCode 返回 400 Bad Request,带有验证错误和自定义错误码。
type HttpServer ¶
type HttpServer struct {
*hosting.BackgroundService
// contains filtered or unexported fields
}
HttpServer is a hosted service that runs the HTTP server.
func NewHttpServer ¶
func NewHttpServer(addr string, engine *gin.Engine, getUrls func() []string) *HttpServer
NewHttpServer creates a new HTTP server.
type IActionResult ¶
IActionResult 表示操作方法的结果。 类似于 .NET 的 IActionResult 接口。
func BadRequestWithCode ¶
func BadRequestWithCode(code, message string) IActionResult
BadRequestWithCode 创建 400 Bad Request 结果,带有自定义错误码。
func Base64Image ¶
func Base64Image(imageData []byte, contentType string) IActionResult
Base64Image 创建 base64 图片结果。 图片数据将被编码为 base64 并以 JSON 格式返回。
func BinaryImage ¶
func BinaryImage(imageData []byte, contentType string) IActionResult
BinaryImage 创建二进制图片结果。 图片数据将以指定的内容类型作为原始二进制返回。
func ContentWithType ¶
func ContentWithType(statusCode int, content, contentType string) IActionResult
ContentWithType 创建内容结果,带有自定义内容类型。
func FileDownload ¶
func FileDownload(filePath, fileName string) IActionResult
FileDownload 创建文件下载结果,带有自定义文件名。
func FrameworkError ¶
func FrameworkError(err *errors.Error) IActionResult
FrameworkError 创建框架错误结果,自动映射 HTTP 状态码。 将常见错误模式映射到适当的 HTTP 状态码: - NOT_FOUND -> 404 - ALREADY_EXISTS -> 409 - PERMISSION_DENIED -> 403 - INVALID_* -> 400 - 默认 -> 400
func FrameworkErrorWithStatus ¶
func FrameworkErrorWithStatus(statusCode int, err *errors.Error) IActionResult
FrameworkErrorWithStatus 创建框架错误结果,带有指定的 HTTP 状态码。
func FromError ¶
func FromError(err error, defaultMessage ...string) IActionResult
FromError 智能处理各种类型的错误并返回对应的 ActionResult。 错误处理优先级: 1. 自定义错误处理器(如果已注册) 2. *errors.Error:自动映射 HTTP 状态码 3. validation.ValidationErrors:返回验证错误响应 4. 普通 error:返回内部错误,使用自定义消息
使用示例:
user, err := service.GetUser(id)
if err != nil {
return web.FromError(err, "获取用户失败")
}
func FromErrorWithStatus ¶
func FromErrorWithStatus(err error, statusCode int, defaultMessage ...string) IActionResult
FromErrorWithStatus 类似 FromError,但允许为普通 error 指定自定义 HTTP 状态码。 错误处理优先级: 1. 自定义错误处理器(如果已注册) 2. *errors.Error:忽略 statusCode,使用自动映射 3. validation.ValidationErrors:忽略 statusCode,固定返回 400 4. 普通 error:使用指定的 statusCode
使用示例:
err := db.Connect()
if err != nil {
return web.FromErrorWithStatus(err, 503, "数据库服务暂时不可用")
}
func InternalError ¶
func InternalError(message string) IActionResult
InternalError 创建 500 Internal Server Error 结果。
func JPEG ¶
func JPEG(imageData []byte) IActionResult
JPEG 创建 JPEG 图片结果。 BinaryImage 的便捷方法,内容类型为 image/jpeg。
func PNG ¶
func PNG(imageData []byte) IActionResult
PNG 创建 PNG 图片结果。 BinaryImage 的便捷方法,内容类型为 image/png。
func RedirectPermanent ¶
func RedirectPermanent(location string) IActionResult
RedirectPermanent 创建 301 Moved Permanently 重定向结果。
func ShouldBindHeader ¶
func ShouldBindHeader[T any](c *HttpContext) (*T, IActionResult)
ShouldBindHeader 绑定 Header 并验证
func ShouldBindJSON ¶
func ShouldBindJSON[T any](c *HttpContext) (*T, IActionResult)
ShouldBindJSON 绑定 JSON 并验证 自动使用注册验证器的模式(快速失败或全量验证)
func ShouldBindPlain ¶
func ShouldBindPlain[T any](c *HttpContext) (*T, IActionResult)
ShouldBindPlain 绑定 Plain 文本并验证
func ShouldBindQuery ¶
func ShouldBindQuery[T any](c *HttpContext) (*T, IActionResult)
ShouldBindQuery 绑定 Query 参数并验证
func ShouldBindTOML ¶
func ShouldBindTOML[T any](c *HttpContext) (*T, IActionResult)
ShouldBindTOML 绑定 TOML 并验证
func ShouldBindUri ¶
func ShouldBindUri[T any](c *HttpContext) (*T, IActionResult)
ShouldBindUri 绑定 URI 参数并验证
func ShouldBindXML ¶
func ShouldBindXML[T any](c *HttpContext) (*T, IActionResult)
ShouldBindXML 绑定 XML 并验证
func ShouldBindYAML ¶
func ShouldBindYAML[T any](c *HttpContext) (*T, IActionResult)
ShouldBindYAML 绑定 YAML 并验证
func Unauthorized ¶
func Unauthorized(message string) IActionResult
Unauthorized 创建 401 Unauthorized 结果。
func ValidationBadRequest ¶
func ValidationBadRequest(errs validation.ValidationErrors) IActionResult
ValidationBadRequest 创建 400 Bad Request 结果,带有验证错误。
func ValidationBadRequestWithCode ¶
func ValidationBadRequestWithCode(code string, errs validation.ValidationErrors) IActionResult
ValidationBadRequestWithCode 创建 400 Bad Request 结果,带有验证错误和自定义错误码。
func WebP ¶
func WebP(imageData []byte) IActionResult
WebP 创建 WebP 图片结果。 BinaryImage 的便捷方法,内容类型为 image/webp。
type IController ¶
type IController interface {
// MapRoutes 向应用程序注册控制器的路由。
MapRoutes(app *WebApplication)
}
IController 定义控制器接口。 实现此接口的控制器可以被 MapControllers() 自动发现和注册。
type Int64ParamRule ¶
type Int64ParamRule struct {
// contains filtered or unexported fields
}
Int64ParamRule int64 参数规则
func (*Int64ParamRule) NonNegative ¶
func (r *Int64ParamRule) NonNegative() *Int64ParamRule
NonNegative 非负数验证
func (*Int64ParamRule) Range ¶
func (r *Int64ParamRule) Range(min, max int64) *Int64ParamRule
Range 范围验证
func (*Int64ParamRule) ValueOr ¶
func (r *Int64ParamRule) ValueOr(defaultValue int64) int64
ValueOr 获取值,如果解析失败则返回默认值
type IntParamRule ¶
type IntParamRule struct {
// contains filtered or unexported fields
}
IntParamRule 整数参数规则
func (*IntParamRule) NonNegative ¶
func (r *IntParamRule) NonNegative() *IntParamRule
NonNegative 非负数验证(大于等于 0)
func (*IntParamRule) ValueOr ¶
func (r *IntParamRule) ValueOr(defaultValue int) int
ValueOr 获取值,如果解析失败或为空则返回默认值
type JsonResult ¶
type JsonResult struct {
StatusCode int
Data interface{}
}
JsonResult 表示自定义 JSON 响应。
func (JsonResult) ExecuteResult ¶
func (r JsonResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type M ¶
type M map[string]interface{}
M 是 map[string]interface{} 的简写,类似于 gin.H。 提供了一种方便的方式来创建 map 响应,而无需输入完整的类型签名。
示例:
return web.Ok(web.M{
"name": "John",
"age": 30,
"active": true,
})
type NoContentResult ¶
type NoContentResult struct{}
NoContentResult 表示 204 No Content 响应。
func (NoContentResult) ExecuteResult ¶
func (r NoContentResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type OkResult ¶
type OkResult struct {
Data interface{}
}
OkResult 表示 200 OK 响应。
func (OkResult) ExecuteResult ¶
ExecuteResult 实现 IActionResult 接口。
type ParamChain ¶
type ParamChain[T any] struct { // contains filtered or unexported fields }
ParamChain 参数验证链,支持泛型和链式调用。
使用示例:
id := web.Path[int](c, "id").Min(1).Required().Value() page := web.Query[int](c, "page").Default(1) email := web.Query[string](c, "email").Required().Email().Value()
func Form ¶
func Form[T any](c *HttpContext, key string) *ParamChain[T]
Form 获取表单参数并转换为指定类型 T。 表单参数默认为可选。
使用示例:
username := web.Form[string](c, "username").Required().MinLength(3).Value()
func Header ¶
func Header[T any](c *HttpContext, key string) *ParamChain[T]
Header 获取请求头并转换为指定类型 T。 请求头默认为可选。
使用示例:
token := web.Header[string](c, "Authorization").Required().MinLength(10).Value()
func Path ¶
func Path[T any](c *HttpContext, key string) *ParamChain[T]
Path 获取路径参数并转换为指定类型 T。 路径参数默认为必填。
使用示例:
id := web.Path[int](c, "id").Min(1).Value()
func Query ¶
func Query[T any](c *HttpContext, key string) *ParamChain[T]
Query 获取查询参数并转换为指定类型 T。 查询参数默认为可选。
使用示例:
page := web.Query[int](c, "page").Default(1) email := web.Query[string](c, "email").Required().Email().Value()
func (*ParamChain[T]) Custom ¶
func (p *ParamChain[T]) Custom(fn func(T) error) *ParamChain[T]
Custom 使用自定义验证函数。
使用示例:
age := web.Query[int](c, "age").Custom(func(v int) error {
if v < 18 || v > 120 {
return errors.New("年龄必须在 18-120 之间")
}
return nil
})
// Min/Max 验证示例
page := web.Query[int](c, "page").Custom(func(v int) error {
if v < 1 {
return errors.New("不能小于 1")
}
if v > 100 {
return errors.New("不能大于 100")
}
return nil
}).Value()
// 字符串长度验证示例
username := web.Query[string](c, "username").Custom(func(v string) error {
if len(v) < 3 {
return errors.New("长度不能少于 3 个字符")
}
if len(v) > 20 {
return errors.New("长度不能超过 20 个字符")
}
return nil
}).Value()
func (*ParamChain[T]) Default ¶
func (p *ParamChain[T]) Default(defaultValue T) T
Default 返回参数值,如果参数不存在或解析失败则返回默认值。 此方法会忽略所有验证错误,直接返回默认值。
使用示例:
page := web.Query[int](c, "page").Default(1)
func (*ParamChain[T]) Get ¶
func (p *ParamChain[T]) Get() (T, error)
Get 返回参数值和标准 error。 使用此方法可以手动处理验证错误(返回自定义错误消息)。
使用示例:
id, err := web.Path[int](c, "id").Min(1).Get()
if err != nil {
return c.BadRequest("ID 无效: " + err.Error())
}
func (*ParamChain[T]) Optional ¶
func (p *ParamChain[T]) Optional() *ParamChain[T]
Optional 显式标记参数为可选(通常不需要调用,query/header 默认就是可选的)。
func (*ParamChain[T]) Required ¶
func (p *ParamChain[T]) Required() *ParamChain[T]
Required 标记参数为必填。 如果参数为空或解析失败,将添加验证错误。
func (*ParamChain[T]) Value ¶
func (p *ParamChain[T]) Value() (T, IActionResult)
Value 获取参数值,如果有验证错误则返回错误响应。 返回 (值, IActionResult),如果验证成功则 IActionResult 为 nil。
使用示例:
id, err := web.Path[int](c, "id").Min(1).Value()
if err != nil {
return err // 立即返回验证错误
}
// 继续执行业务逻辑
func (*ParamChain[T]) ValueOr ¶
func (p *ParamChain[T]) ValueOr(defaultValue T) T
ValueOr 是 Default 的别名,提供更直观的语义。
type ParamValidator
deprecated
type ParamValidator struct {
// contains filtered or unexported fields
}
ParamValidator 参数验证器,支持链式调用
Deprecated: 使用新的泛型参数 API 代替:web.Path[T], web.Query[T], web.Header[T]
迁移示例:
// 旧 API:
params := c.Params()
id := params.PathInt("id").Min(1).Value()
page := params.QueryInt("page").ValueOr(1)
email := params.QueryString("email").Required().Email().Value()
if result := params.Check(); result != nil { return result }
// 新 API:
id := web.Path[int](c, "id").Min(1).Value()
page := web.Query[int](c, "page").Default(1)
email := web.Query[string](c, "email").Required().Email().Value()
// 不需要手动 Check(),验证错误会自动处理
func (*ParamValidator) Check ¶
func (v *ParamValidator) Check() IActionResult
Check 检查所有验证规则,如果有错误返回 ValidationBadRequest 结果
func (*ParamValidator) Errors ¶
func (v *ParamValidator) Errors() validation.ValidationErrors
Errors 获取所有验证错误
func (*ParamValidator) HeaderInt ¶
func (v *ParamValidator) HeaderInt(key string) *IntParamRule
HeaderInt 获取并验证 header 整数参数
func (*ParamValidator) HeaderString ¶
func (v *ParamValidator) HeaderString(key string) *StringParamRule
HeaderString 获取并验证 header 字符串参数
func (*ParamValidator) PathInt ¶
func (v *ParamValidator) PathInt(key string) *IntParamRule
PathInt 获取并验证 path 整数参数
func (*ParamValidator) PathInt64 ¶
func (v *ParamValidator) PathInt64(key string) *Int64ParamRule
PathInt64 获取并验证 path int64 参数
func (*ParamValidator) PathString ¶
func (v *ParamValidator) PathString(key string) *StringParamRule
PathString 获取并验证 path 字符串参数
func (*ParamValidator) QueryBool ¶
func (v *ParamValidator) QueryBool(key string) *BoolParamRule
QueryBool 获取并验证 query 布尔参数
func (*ParamValidator) QueryFloat ¶
func (v *ParamValidator) QueryFloat(key string) *FloatParamRule
QueryFloat 获取并验证 query 浮点数参数
func (*ParamValidator) QueryInt ¶
func (v *ParamValidator) QueryInt(key string) *IntParamRule
QueryInt 获取并验证 query 整数参数
func (*ParamValidator) QueryInt64 ¶
func (v *ParamValidator) QueryInt64(key string) *Int64ParamRule
QueryInt64 获取并验证 query int64 参数
func (*ParamValidator) QueryString ¶
func (v *ParamValidator) QueryString(key string) *StringParamRule
QueryString 获取并验证 query 字符串参数
type RedirectResult ¶
RedirectResult 表示重定向响应。
func (RedirectResult) ExecuteResult ¶
func (r RedirectResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type StaticFileOptions ¶
StaticFileOptions 表示静态文件服务选项。
type StatusResult ¶
type StatusResult struct {
StatusCode int
}
StatusResult 表示仅包含状态码的响应。
func (StatusResult) ExecuteResult ¶
func (r StatusResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type StringParamRule ¶
type StringParamRule struct {
// contains filtered or unexported fields
}
StringParamRule 字符串参数规则
func (*StringParamRule) AlphaNumeric ¶
func (r *StringParamRule) AlphaNumeric() *StringParamRule
AlphaNumeric 只允许字母和数字
func (*StringParamRule) In ¶
func (r *StringParamRule) In(values ...string) *StringParamRule
In 枚举值验证
func (*StringParamRule) Length ¶
func (r *StringParamRule) Length(min, max int) *StringParamRule
Length 长度范围验证
func (*StringParamRule) MaxLength ¶
func (r *StringParamRule) MaxLength(max int) *StringParamRule
MaxLength 最大长度验证
func (*StringParamRule) MinLength ¶
func (r *StringParamRule) MinLength(min int) *StringParamRule
MinLength 最小长度验证
func (*StringParamRule) NotEmpty ¶
func (r *StringParamRule) NotEmpty() *StringParamRule
NotEmpty 非空验证(与 Required 类似,但语义更清晰)
func (*StringParamRule) NotIn ¶
func (r *StringParamRule) NotIn(values ...string) *StringParamRule
NotIn 不在枚举值中
func (*StringParamRule) Optional ¶
func (r *StringParamRule) Optional() *StringParamRule
Optional 标记为可选参数
func (*StringParamRule) Pattern ¶
func (r *StringParamRule) Pattern(pattern, message string) *StringParamRule
Pattern 正则表达式验证
func (*StringParamRule) Required ¶
func (r *StringParamRule) Required() *StringParamRule
Required 必填验证
func (*StringParamRule) ValueOr ¶
func (r *StringParamRule) ValueOr(defaultValue string) string
ValueOr 获取值,如果为空则返回默认值
type ValidationErrorResult ¶
type ValidationErrorResult struct {
StatusCode int
Errors validation.ValidationErrors
}
ValidationErrorResult 表示验证错误响应。
func (ValidationErrorResult) ExecuteResult ¶
func (r ValidationErrorResult) ExecuteResult(c *gin.Context)
ExecuteResult 实现 IActionResult 接口。
type WebApplication ¶
type WebApplication struct {
Services di.IServiceProvider // ✅ 直接暴露,强类型
Environment hosting.IHostEnvironment
// contains filtered or unexported fields
}
WebApplication 表示已配置的 Web 应用程序。
func (*WebApplication) DELETE ¶
func (app *WebApplication) DELETE(pattern string, handlers ...Handler) router.IEndpointConventionBuilder
DELETE 注册 DELETE 端点。 处理器必须是 ActionHandlerFunc: func(*HttpContext) IActionResult
func (*WebApplication) GET ¶
func (app *WebApplication) GET(pattern string, handlers ...Handler) router.IEndpointConventionBuilder
GET 注册 GET 端点。 处理器必须是 ActionHandlerFunc: func(*HttpContext) IActionResult
func (*WebApplication) GetRoutes ¶
func (app *WebApplication) GetRoutes() []*router.RouteBuilder
GetRoutes 返回所有已注册的路由。
func (*WebApplication) Group ¶
func (app *WebApplication) Group(prefix string, handlers ...Handler) *router.RouteGroupBuilder
Group 创建路由组。 支持 ActionHandlerFunc: func(*HttpContext) IActionResult
func (*WebApplication) MapControllers ¶
func (app *WebApplication) MapControllers() *WebApplication
MapControllers 发现并注册所有控制器为单例。 每个控制器在启动时创建一次,并在应用程序的整个生命周期内使用。 在调用此方法之前,必须使用 AddController() 注册控制器。
此方法应在 Build() 之后和 Run() 之前调用。 对应 .NET 的 app.MapControllers()。
用法:
app := builder.Build() app.MapControllers() // 控制器在此处作为单例创建 app.Run()
func (*WebApplication) PATCH ¶
func (app *WebApplication) PATCH(pattern string, handlers ...Handler) router.IEndpointConventionBuilder
PATCH 注册 PATCH 端点。 处理器必须是 ActionHandlerFunc: func(*HttpContext) IActionResult
func (*WebApplication) POST ¶
func (app *WebApplication) POST(pattern string, handlers ...Handler) router.IEndpointConventionBuilder
POST 注册 POST 端点。 处理器必须是 ActionHandlerFunc: func(*HttpContext) IActionResult
func (*WebApplication) PUT ¶
func (app *WebApplication) PUT(pattern string, handlers ...Handler) router.IEndpointConventionBuilder
PUT 注册 PUT 端点。 处理器必须是 ActionHandlerFunc: func(*HttpContext) IActionResult
func (*WebApplication) Run ¶
func (app *WebApplication) Run(urls ...string) error
Run 运行 Web 应用程序并阻塞直到关闭。 如果提供了 urls 参数,它们将覆盖配置的监听地址。 对应 .NET 的 app.Run(url)。
func (*WebApplication) RunWithContext ¶
func (app *WebApplication) RunWithContext(ctx context.Context) error
RunWithContext 使用自定义上下文运行 Web 应用程序并阻塞直到关闭。
func (*WebApplication) Start ¶
func (app *WebApplication) Start(ctx context.Context) error
Start 启动 Web 应用程序。
func (*WebApplication) Stop ¶
func (app *WebApplication) Stop(ctx context.Context) error
Stop 停止 Web 应用程序。
func (*WebApplication) Use ¶
func (app *WebApplication) Use(middleware ...gin.HandlerFunc)
Use 向管道添加中间件。
func (*WebApplication) UseCors ¶
func (app *WebApplication) UseCors(configure ...func(*CorsOptions)) *WebApplication
UseCors 向应用程序添加 CORS 中间件。 对应 .NET 的 app.UseCors()。
func (*WebApplication) UseDefaultFiles ¶
func (app *WebApplication) UseDefaultFiles() *WebApplication
UseDefaultFiles 启用默认文件映射。 对应 .NET 的 app.UseDefaultFiles()。
func (*WebApplication) UseStaticFiles ¶
func (app *WebApplication) UseStaticFiles(configure ...func(*StaticFileOptions)) *WebApplication
UseStaticFiles 提供静态文件服务。 对应 .NET 的 app.UseStaticFiles()。
type WebApplicationBuilder ¶
type WebApplicationBuilder struct {
Services di.IServiceCollection
Configuration config.IConfigurationManager
Environment hosting.IHostEnvironment
Host *ConfigureHostBuilder
WebHost *ConfigureWebHostBuilder
// contains filtered or unexported fields
}
WebApplicationBuilder is a builder for web applications. Corresponds to .NET WebApplicationBuilder.
func CreateBuilder ¶
func CreateBuilder(args ...string) *WebApplicationBuilder
CreateBuilder creates a new web application builder. Corresponds to .NET WebApplication.CreateBuilder(args).
func (*WebApplicationBuilder) AddControllers ¶
func (b *WebApplicationBuilder) AddControllers(configure ...func(*ControllerOptions)) *WebApplicationBuilder
AddControllers 添加 MVC 控制器服务并启用控制器发现。 TODO: 此方法尚未使用。 对应 .NET 的 services.AddControllers()。
func (*WebApplicationBuilder) AddCors ¶
func (b *WebApplicationBuilder) AddCors(configure ...func(*CorsOptions)) *WebApplicationBuilder
AddCors 向服务集合添加 CORS 服务。 对应 .NET 的 services.AddCors()。
func (*WebApplicationBuilder) Build ¶
func (b *WebApplicationBuilder) Build() *WebApplication
Build builds the web application.