Documentation
¶
Index ¶
- Constants
- func DefaultRateLimitKeyFunc(c *Context) string
- func DevelopmentCSPConfig() string
- func DisableBindValidation()
- func EnableJsonDecoderDisallowUnknownFields()
- func EnableJsonDecoderUseNumber()
- func EndpointBasedRateLimitKeyFunc(c *Context) string
- func ExtractParamNames(pattern string) ([]string, error)
- func GenerateSecureJWTKey() (string, error)
- func SetMode(value string)
- func StrictCSPConfig() string
- func UserBasedRateLimitKeyFunc(c *Context) string
- func ValidateRoutePattern(method, pattern string) error
- func ValidateSegmentName(name string) error
- func WithFallback(handler gin.HandlerFunc) func(*ZipFSConfig)
- func WithHotReload(interval time.Duration) func(*ZipFSConfig)
- func WithIndexFile(filename string) func(*ZipFSConfig)
- func WithPassword(password string) func(*ZipFSConfig)
- func WithSubPaths(paths ...string) func(*ZipFSConfig)
- func WrapHandler(handler HandlerFunc) gin.HandlerFunc
- type APIRoute
- type AuthInfo
- type BasicHandler
- type Config
- type Contact
- type Context
- func (c *Context) Accepted(msg string, url ...string)
- func (c *Context) AuthInfo() (*types.AuthInfo, bool)
- func (c *Context) BaseURL() string
- func (c *Context) BindAndValidate(obj interface{}) bool
- func (c *Context) BindJSON(obj interface{}) bool
- func (c *Context) BindQuery(obj interface{}) bool
- func (c *Context) BroadcastSSE(event *sse.Event)
- func (c *Context) BuildURL(path string) *URLBuilder
- func (c *Context) CSRFToken() string
- func (c *Context) CacheClear()
- func (c *Context) CacheDelete(key string)
- func (c *Context) CacheGet(key string) (interface{}, bool)
- func (c *Context) CacheHas(key string) bool
- func (c *Context) CacheSet(key string, value interface{}, duration ...time.Duration)
- func (c *Context) ClearJWT()
- func (c *Context) Clone() *Context
- func (c *Context) ComponentsCount() int
- func (c *Context) CreateJWTSession(secretKey string, duration time.Duration, payload types.H) (string, error)
- func (c *Context) Created(data interface{}, url ...string)
- func (c *Context) Domain() string
- func (c *Context) Error(msg string, url ...string)
- func (c *Context) ErrorWithCode(err error)
- func (c *Context) Fail(msg string, url ...string)
- func (c *Context) Forbidden(msg string, url ...string)
- func (c *Context) GenerateJWT(payload JWTPayload) (string, error)
- func (c *Context) GenerateRequestID() string
- func (c *Context) GenerateTokens(userClaims UserClaims, config ...*OAuthConfig) (*TokenResponse, error)
- func (c *Context) GetCache() *cache.Cache[string, any]
- func (c *Context) GetGlobalCache() *cache.Cache[string, any]
- func (c *Context) GetIP() string
- func (c *Context) GetIntSlice(key string, sep ...string) []int
- func (c *Context) GetJWT() string
- func (c *Context) GetJWTPayload() JWTPayload
- func (c *Context) GetUserAgent() string
- func (c *Context) HasAllRoles(roles ...string) bool
- func (c *Context) HasAnyRole(roles ...string) bool
- func (c *Context) HasComponents() bool
- func (c *Context) HasRole(role string) bool
- func (c *Context) Host() string
- func (c *Context) IsAjax() bool
- func (c *Context) IsJSON() bool
- func (c *Context) IsPooled() bool
- func (c *Context) IsSSL() bool
- func (c *Context) JWTClaimString(key string) string
- func (c *Context) JWTClaimStrings(key string) []string
- func (c *Context) Language() string
- func (c *Context) Method() string
- func (c *Context) NewSSEClient(filters ...string) *sse.Client
- func (c *Context) NewSSEClientWithOptions(filters []string, opts ...sse.ClientOption) *sse.Client
- func (c *Context) Next()
- func (c *Context) NoContent()
- func (c *Context) NotFound(msg string, url ...string)
- func (c *Context) PageResponse(list interface{}, totalCount int64, currentPage, pageSize int)
- func (c *Context) Paginate(defaultPageSize ...int) (page, pageSize int)
- func (c *Context) PaginateResponse(fetch func(page, size int) (interface{}, int64))
- func (c *Context) Paginated(data interface{}, page, pageSize, total int64, url ...string)
- func (c *Context) Param(param string, defaultValue ...string) string
- func (c *Context) ParamInt(param string, defaultValue ...int) int
- func (c *Context) Port() string
- func (c *Context) RefreshJWTSession(secretKey string, duration time.Duration) (string, error)
- func (c *Context) RefreshTokens(refreshToken string, config ...*OAuthConfig) (*TokenResponse, error)
- func (c *Context) RequireJWT(secretKey ...string) (JWTPayload, bool)
- func (c *Context) RequireParams(params ...string) bool
- func (c *Context) Reset()
- func (c *Context) RootDomain() string
- func (c *Context) SaveUploadedFile(file *multipart.FileHeader, config types.UploadConfig) (string, error)
- func (c *Context) Scheme() string
- func (c *Context) ServerError(msg ...string)
- func (c *Context) SessionGetString(key string) string
- func (c *Context) SetCSP(policy string)
- func (c *Context) SetCSRFToken() string
- func (c *Context) SetCache(cache *cache.Cache[string, any])
- func (c *Context) SetErrorHandler(handler types.ErrorHandler)
- func (c *Context) SetJWT(token string, maxAge int)
- func (c *Context) SetJWTAdapter(adapter *JWTAdapter)
- func (c *Context) SetJWTPayload(payload JWTPayload)
- func (c *Context) SetSSEHub(hub *sse.Hub)
- func (c *Context) SetSecureHeaders()
- func (c *Context) SetXFrameOptions(option string)
- func (c *Context) StreamFile(filepath string, filename string)
- func (c *Context) Success(data interface{}, url ...string)
- func (c *Context) SuccessWithMsg(msg string, data interface{}, url ...string)
- func (c *Context) Type() string
- func (c *Context) URL() string
- func (c *Context) Unauthorized(msg string)
- func (c *Context) Validate(v types.Validator) bool
- func (c *Context) ValidateFile(file *multipart.FileHeader, config types.UploadConfig) error
- func (c *Context) ValidateJWT(token ...string) (JWTPayload, error)
- func (c *Context) ValidationError(errors interface{}, url ...string)
- func (c *Context) WithComponents(cache *cache.Cache[string, any], errorHandler types.ErrorHandler, ...) *Context
- type DefaultErrorHandler
- type DefaultLogger
- type DocBuilder
- func (b *DocBuilder) AsOption() RouteOption
- func (b *DocBuilder) BearerAuth() *DocBuilder
- func (b *DocBuilder) Build() RouteOption
- func (b *DocBuilder) Deprecated() *DocBuilder
- func (b *DocBuilder) Description(description string) *DocBuilder
- func (b *DocBuilder) ErrorResponse(status int, v any) *DocBuilder
- func (b *DocBuilder) Header(name, typ, desc string, required bool) *DocBuilder
- func (b *DocBuilder) Hide() *DocBuilder
- func (b *DocBuilder) OperationID(operationID string) *DocBuilder
- func (b *DocBuilder) PathParam(name, typ, desc string) *DocBuilder
- func (b *DocBuilder) QueryParam(name, typ, desc string, required bool) *DocBuilder
- func (b *DocBuilder) RequestBody(v any) *DocBuilder
- func (b *DocBuilder) Response(statusOrValue any, vOptional ...any) *DocBuilder
- func (b *DocBuilder) ResponseHeader(name, typ string, desc ...string) *DocBuilder
- func (b *DocBuilder) Summary(summary string) *DocBuilder
- func (b *DocBuilder) Tags(tags ...string) *DocBuilder
- type DocOption
- func Deprecated() DocOption
- func Description(text string) DocOption
- func PathParam(name, typ, description string) DocOption
- func QueryParam(name, typ, description string, required bool) DocOption
- func ReqBody[T any]() DocOption
- func RequestBody(value interface{}) DocOption
- func Resp[T any](status int) DocOption
- func Response(statusOrValue interface{}, valueOptional ...interface{}) DocOption
- func Security(scheme string, scopes ...string) DocOption
- func Summary(text string) DocOption
- func Tags(tags ...string) DocOption
- type ErrorHandler
- type ExternalDocs
- type FileLogger
- type GinCompatLogger
- type H
- type Handler
- type HandlerFunc
- type JWTAdapter
- func (a *JWTAdapter) Close() error
- func (a *JWTAdapter) GenerateToken(payload JWTPayload) (string, error)
- func (a *JWTAdapter) IsTokenRevoked(jti string) bool
- func (a *JWTAdapter) RevokeToken(jti string, exp time.Time) error
- func (a *JWTAdapter) ValidateToken(tokenStr string) (JWTPayload, error)
- func (a *JWTAdapter) WithTimeout(d time.Duration) *JWTAdapter
- type JWTAuthRoutesConfig
- type JWTPayload
- type JWTTokens
- type License
- type Location
- type Logger
- type LoggerConfig
- type MemoryRateLimiter
- type NoOpLogger
- type OAuthConfig
- type OAuthFlow
- type OAuthFlows
- type OpenAPI
- type Origin
- type PathValidationError
- type PatternSegment
- type Payload
- type RESTOption
- func RESTWithBasePath(path string) RESTOption
- func RESTWithDoc(action string, opts ...DocOption) RESTOption
- func RESTWithDocsAll(opts ...DocOption) RESTOption
- func RESTWithIDParam(name string) RESTOption
- func RESTWithMiddleware(m ...HandlerFunc) RESTOption
- func RESTWithRouteOptions(action string, options ...interface{}) RESTOption
- type RateLimitConfig
- type RateLimiter
- type RefreshRequest
- type ResourceHandler
- type RestfulHandler
- type RouteError
- type RouteHandler
- type RouteOption
- func DocAutoPathParams() RouteOption
- func DocBasicAuth() RouteOption
- func DocBearerAuth() RouteOption
- func DocDeprecated() RouteOption
- func DocDescription(description string) RouteOption
- func DocErrorResponse(status int, v any) RouteOption
- func DocHeader(name, typ, desc string, required bool) RouteOption
- func DocHide() RouteOption
- func DocOperationID(operationID string) RouteOption
- func DocPathParam(name, typ, desc string) RouteOption
- func DocQueryParam(name, typ, desc string, required bool) RouteOption
- func DocRequestBody(v any) RouteOption
- func DocResponse(statusOrValue any, vOptional ...any) RouteOption
- func DocResponseHeader(name, typ string, desc ...string) RouteOption
- func DocSummary(summary string) RouteOption
- func DocTag(tag string) RouteOption
- func DocTags(tags ...string) RouteOption
- type RoutePattern
- func (rp *RoutePattern) Clone() *RoutePattern
- func (rp *RoutePattern) Equals(other *RoutePattern) bool
- func (rp *RoutePattern) GetParamNames() []string
- func (rp *RoutePattern) GetParamSegmentCount() int
- func (rp *RoutePattern) GetSegmentCount() int
- func (rp *RoutePattern) GetStaticSegmentCount() int
- func (rp *RoutePattern) HasParam(name string) bool
- func (rp *RoutePattern) IsConflictWith(other *RoutePattern) bool
- func (rp *RoutePattern) String() string
- func (rp *RoutePattern) ToMap() map[string]interface{}
- func (rp *RoutePattern) Validate() error
- type Router
- func (r *Router) ANY(path string, handler HandlerFunc, middleware ...HandlerFunc)
- func (r *Router) API(version string) *RouterGroup
- func (r *Router) CRUD(resource string, handler ResourceHandler, opts ...RESTOption)
- func (r *Router) Close() error
- func (r *Router) DELETE(path string, handler HandlerFunc, options ...interface{})
- func (r *Router) EnableSwagger(paths ...string)
- func (r *Router) Engine() *gin.Engine
- func (r *Router) GET(path string, handler HandlerFunc, options ...interface{})
- func (r *Router) GenerateOpenAPISpec() *openapi3.T
- func (r *Router) GetCache() *cache.Cache[string, any]
- func (r *Router) GetErrorHandler() errors.ErrorHandler
- func (r *Router) GetHandler() Handler
- func (r *Router) GetJWTAdapter() *JWTAdapter
- func (r *Router) GetRoutes() []string
- func (r *Router) GetSSEHub() *sse.Hub
- func (r *Router) GracefulShutdown(timeout time.Duration) error
- func (r *Router) Group(path string, middleware ...HandlerFunc) *RouterGroup
- func (r *Router) HEAD(path string, handler HandlerFunc, options ...interface{})
- func (r *Router) Health(path ...string)
- func (r *Router) InvalidateOpenAPICache()
- func (r *Router) IsRunning() bool
- func (r *Router) JWTAuthRoutes(cfg JWTAuthRoutesConfig)
- func (r *Router) JWTMiddleware() gin.HandlerFunc
- func (r *Router) Metrics(path ...string)
- func (r *Router) NewSSEHub(size ...int) *sse.Hub
- func (r *Router) OAuth(basePath ...string)
- func (r *Router) OPTIONS(path string, handler HandlerFunc, options ...interface{})
- func (r *Router) PATCH(path string, handler HandlerFunc, options ...interface{})
- func (r *Router) POST(path string, handler HandlerFunc, options ...interface{})
- func (r *Router) PUT(path string, handler HandlerFunc, options ...interface{})
- func (r *Router) REST(resource string, handler ResourceHandler, opts ...RESTOption)
- func (r *Router) Register(method, path string, handler HandlerFunc, middleware ...HandlerFunc)
- func (r *Router) RequireAnyRole(roles ...string) HandlerFunc
- func (r *Router) RequireAuth(scopes ...string) HandlerFunc
- func (r *Router) RequireRoles(roles ...string) HandlerFunc
- func (r *Router) Resource(path string, handler ResourceHandler, middleware ...HandlerFunc)
- func (r *Router) Restart() error
- func (r *Router) Run(addr ...string) error
- func (r *Router) RunTLS(addr, certFile, keyFile string) error
- func (r *Router) RunWithContext(ctx context.Context, config ...ServerConfig) error
- func (r *Router) RunWithContextString(ctx context.Context, addr string) error
- func (r *Router) RunWithGracefulShutdown(config ServerConfig) error
- func (r *Router) SetEmbed(urlPrefix string, embedFS embed.FS, subPaths ...string) error
- func (r *Router) SetEmbedFile(urlPath string, embedFS embed.FS, filePath string) error
- func (r *Router) SetGlobalCacheMiddleware(defaultExpiration, cleanupInterval time.Duration) HandlerFunc
- func (r *Router) SetPersistCacheMiddleware(defaultExpiration, cleanupInterval time.Duration, persistPath string, ...) HandlerFunc
- func (r *Router) SetZipFS(zipPath, urlPrefix string, options ...func(*ZipFSConfig)) error
- func (r *Router) SetZipFSWithMiddleware(config ZipFSConfig, middlewares ...gin.HandlerFunc) error
- func (r *Router) SetZipFile(urlPath, zipPath, filePath string, options ...ZipFileOption) error
- func (r *Router) StartSSE() error
- func (r *Router) StaticFiles(relativePath, root string, middleware ...HandlerFunc)
- func (r *Router) Upload(path string, handler func(*Context, *multipart.FileHeader) error, ...)
- func (r *Router) Use(middleware ...HandlerFunc)
- func (r *Router) UseGin(middleware ...gin.HandlerFunc)
- func (r *Router) WithCache(cache *cache.Cache[string, any]) HandlerFunc
- func (r *Router) WithHandler(handler Handler) *Router
- type RouterConfig
- type RouterGroup
- func (rg *RouterGroup) ANY(path string, handler HandlerFunc, middleware ...HandlerFunc)
- func (rg *RouterGroup) DELETE(path string, handler HandlerFunc, options ...interface{})
- func (rg *RouterGroup) GET(path string, handler HandlerFunc, options ...interface{})
- func (rg *RouterGroup) GetHandler() Handler
- func (rg *RouterGroup) Group(path string, middleware ...HandlerFunc) *RouterGroup
- func (rg *RouterGroup) HEAD(path string, handler HandlerFunc, options ...interface{})
- func (rg *RouterGroup) OPTIONS(path string, handler HandlerFunc, options ...interface{})
- func (rg *RouterGroup) PATCH(path string, handler HandlerFunc, options ...interface{})
- func (rg *RouterGroup) POST(path string, handler HandlerFunc, options ...interface{})
- func (rg *RouterGroup) PUT(path string, handler HandlerFunc, options ...interface{})
- func (rg *RouterGroup) REST(resource string, handler ResourceHandler, opts ...RESTOption)
- func (rg *RouterGroup) Register(method, path string, handler HandlerFunc, middleware ...HandlerFunc)
- func (rg *RouterGroup) Resource(path string, handler ResourceHandler, middleware ...HandlerFunc)
- func (rg *RouterGroup) SetZipFS(zipPath string, options ...func(*ZipFSConfig)) error
- func (rg *RouterGroup) SetZipFSWithMiddleware(zipPath string, middlewares []gin.HandlerFunc, options ...func(*ZipFSConfig)) error
- func (rg *RouterGroup) SetZipFile(urlPath, zipPath, filePath string, options ...ZipFileOption) error
- func (rg *RouterGroup) Use(middleware ...HandlerFunc)
- func (rg *RouterGroup) UseGin(middleware ...gin.HandlerFunc)
- func (rg *RouterGroup) WithMiddleware(middleware ...HandlerFunc) *RouterGroup
- func (rg *RouterGroup) WithPrefix(prefix string) *RouterGroup
- func (rg *RouterGroup) WithSecurity(scheme string, scopes ...string) *RouterGroup
- func (rg *RouterGroup) WithTags(tags ...string) *RouterGroup
- type RouterOption
- func WithCORS(allowOrigins ...string) RouterOption
- func WithCache(config *cache.Config) RouterOption
- func WithConfig(customize func(*Config)) RouterOption
- func WithGinMode(mode string) RouterOption
- func WithJWT(secret string, customize ...func(*SecurityConfig)) RouterOption
- func WithMiddleware(middlewares ...gin.HandlerFunc) RouterOption
- func WithOpenAPI(config *OpenAPI) RouterOption
- func WithRateLimit(requestsPerMinute int) RouterOption
- func WithRateLimitEnhanced(requestsPerMinute int, keyFunc ...func(*Context) string) RouterOption
- func WithRequestID() RouterOption
- func WithSSE(config *sse.Config) RouterOption
- func WithSecurityConfig(configure func(*SecurityConfig)) RouterOption
- func WithSecurityHeaders(config ...SecurityHeadersConfig) RouterOption
- func WithTimeout(timeout time.Duration) RouterOption
- type SchemaInfo
- type SecurityConfig
- type SecurityHeadersConfig
- type SecurityRequirement
- type SecurityScheme
- type SecuritySchemes
- type SegmentType
- type Server
- type ServerConfig
- type Servers
- type TokenResponse
- type URLBuilder
- type UserClaims
- type ZipFSConfig
- type ZipFSMetrics
- type ZipFile
- type ZipFileConfig
- type ZipFileOption
- type ZipFileSystem
Constants ¶
const ( ClaimIss = "iss" ClaimSub = "sub" ClaimAud = "aud" ClaimExp = "exp" ClaimNbf = "nbf" ClaimIat = "iat" ClaimJti = "jti" ClaimType = "typ" ClaimScope = "scp" TokenTypeAccess = "access_token" TokenTypeRefresh = "refresh_token" )
const ( Int = "int" Int64 = "int64" Float = "float" DateTime = "date-time" Date = "date" UUID = "uuid" Bool = "bool" String = "string" )
const ( ErrCodeRouteConflict = 4001 // 路由冲突 ErrCodeInvalidPath = 4002 // 无效路径 ErrCodeInvalidMethod = 4003 // 无效方法 ErrCodeMiddlewareTimeout = 4004 // 中间件超时 ErrCodeRegistrationFail = 4005 // 注册失败 ErrCodePatternInvalid = 4006 // 模式无效 ErrCodeMetadataInvalid = 4007 // 元数据无效 )
路由相关错误码
const ( EnvGinMode = "GIN_MODE" DebugMode = "debug" ReleaseMode = "release" TestMode = "test" )
Variables ¶
This section is empty.
Functions ¶
func DefaultRateLimitKeyFunc ¶ added in v0.1.5
DefaultRateLimitKeyFunc 默认的限流键生成函数(基于IP)
func DevelopmentCSPConfig ¶ added in v0.1.5
func DevelopmentCSPConfig() string
DevelopmentCSPConfig 开发环境CSP配置(较为宽松)
func EnableJsonDecoderDisallowUnknownFields ¶
func EnableJsonDecoderDisallowUnknownFields()
EnableJsonDecoderDisallowUnknownFields 设置 binding.EnableDecoderDisallowUnknownFields 为 true,以调用 JSON 解码器实例的 DisallowUnknownFields 方法。
func EnableJsonDecoderUseNumber ¶
func EnableJsonDecoderUseNumber()
EnableJsonDecoderUseNumber 设置 binding.EnableDecoderUseNumber 为 true,以调用 JSON 解码器实例的 UseNumber 方法。
func EndpointBasedRateLimitKeyFunc ¶ added in v0.1.5
EndpointBasedRateLimitKeyFunc 基于端点的限流键生成函数
func ExtractParamNames ¶ added in v0.1.5
ExtractParamNames 从路径中提取所有参数名
func GenerateSecureJWTKey ¶ added in v0.1.5
GenerateSecureJWTKey 生成安全的JWT密钥(用于部署脚本)
func UserBasedRateLimitKeyFunc ¶ added in v0.1.5
UserBasedRateLimitKeyFunc 基于用户的限流键生成函数
func ValidateRoutePattern ¶ added in v0.1.5
ValidateRoutePattern 验证路由模式字符串的有效性
func ValidateSegmentName ¶ added in v0.1.5
ValidateSegmentName 验证段名称(参数名或通配符名)
func WithFallback ¶ added in v0.1.5
func WithFallback(handler gin.HandlerFunc) func(*ZipFSConfig)
WithFallback 设置回退处理器
func WithHotReload ¶ added in v0.1.5
func WithHotReload(interval time.Duration) func(*ZipFSConfig)
WithHotReload 启用热更新
func WithIndexFile ¶ added in v0.1.5
func WithIndexFile(filename string) func(*ZipFSConfig)
WithIndexFile 设置首页文件
func WithPassword ¶ added in v0.1.5
func WithPassword(password string) func(*ZipFSConfig)
WithPassword 设置zip文件密码
func WithSubPaths ¶ added in v0.1.5
func WithSubPaths(paths ...string) func(*ZipFSConfig)
WithSubPaths 设置子路径限制
func WrapHandler ¶
func WrapHandler(handler HandlerFunc) gin.HandlerFunc
WrapHandler 包装处理函数,自动转换Context类型
Types ¶
type APIRoute ¶ added in v0.1.5
type APIRoute struct {
// 基础路由信息
Method string // HTTP方法
Path string // 路径
Handler HandlerFunc // 处理函数
Metadata map[string]interface{} // 存储文档元数据(保持向后兼容)
// OpenAPI文档字段
OperationID string // 操作ID
Summary string // 摘要
Description string // 描述
Tags []string // 标签
Deprecated bool // 是否已弃用
Hide bool // 是否在文档中隐藏
// 参数
PathParams []*openapi3.ParameterRef // 路径参数
QueryParams []*openapi3.ParameterRef // 查询参数
Headers []*openapi3.ParameterRef // 头部参数
// 请求/响应
Request *openapi3.SchemaRef // 请求体schema
Responses map[int]*openapi3.SchemaRef // 响应schema
ResponseHeaders map[string]*openapi3.HeaderRef // 响应头部
// 安全认证
BearerAuth bool // Bearer认证
BasicAuth bool // Basic认证
Security []map[string][]string // 安全配置
// 示例
RequestExample interface{} // 请求示例
}
APIRoute API路由文档信息记录
type BasicHandler ¶
type BasicHandler struct {
// contains filtered or unexported fields
}
BasicHandler 结构体用于存储处理函数
func NewBasicHandler ¶ added in v0.1.1
func NewBasicHandler() *BasicHandler
NewBasicHandler 创建一个新的基本处理器
func (*BasicHandler) GetHandler ¶
func (b *BasicHandler) GetHandler(action string) (HandlerFunc, bool)
GetHandler 方法根据动作获取处理函数 返回处理函数和是否找到的布尔值
func (*BasicHandler) Handlers ¶
func (b *BasicHandler) Handlers() map[string]HandlerFunc
Handlers 获取所有处理函数映射
func (*BasicHandler) SetHandler ¶
func (b *BasicHandler) SetHandler(action string, handlerFunc HandlerFunc)
SetHandler 方法用于设置处理函数
type Config ¶ added in v0.1.5
type Config struct {
// 缓存配置
CacheEnabled bool `json:"cache_enabled"`
CacheConfig *cache.Config `json:"cache_config,omitempty"`
// 安全配置
SecurityConfig *SecurityConfig `json:"security_config,omitempty"`
// SSE配置
SSEEnabled bool `json:"sse_enabled"`
SSEConfig *sse.Config `json:"sse_config,omitempty"`
// OpenAPI配置
OpenAPIEnabled bool `json:"openapi_enabled"`
OpenAPI *OpenAPI `json:"openapi_config,omitempty"`
// 错误处理配置
ErrorHandlerEnabled bool `json:"error_handler_enabled"`
SensitiveFilter bool `json:"sensitive_filter"`
// 日志配置
LoggerConfig *LoggerConfig `json:"logger_config,omitempty"`
}
Config 框架配置
type Contact ¶ added in v0.1.5
type Contact struct {
Extensions map[string]any `json:"-" yaml:"-"` // OpenAPI规范之外的自定义扩展
Name string `json:"name,omitempty" yaml:"name,omitempty"` // 可选的联系人姓名
URL string `json:"url,omitempty" yaml:"url,omitempty"` // Optional contact URL
Email string `json:"email,omitempty" yaml:"email,omitempty"` // Optional contact email
}
Contact 包含API维护者的联系信息
type Context ¶
Context 增强的请求上下文,实现types.RequestContext接口 优化版本:减少字段数量,使用延迟初始化,支持对象池化
func NewContext ¶ added in v0.1.5
NewContext 创建新的Context实例(公共方法)
func NewContextWithComponents ¶ added in v0.1.5
func NewContextWithComponents(c *gin.Context, cache *cache.Cache[string, any], errorHandler types.ErrorHandler, jwtAdapter *JWTAdapter, sseHub *sse.Hub, ) *Context
NewContextWithComponents 创建带组件的Context实例
func (*Context) BindAndValidate ¶ added in v0.1.1
BindAndValidate 绑定并验证请求数据
func (*Context) BroadcastSSE ¶ added in v0.1.5
BroadcastSSE 广播SSE事件
func (*Context) BuildURL ¶ added in v0.1.5
func (c *Context) BuildURL(path string) *URLBuilder
BuildURL 创建一个 URLBuilder 实例
func (*Context) CacheDelete ¶ added in v0.1.2
CacheDelete 从缓存删除值
func (*Context) ComponentsCount ¶ added in v0.1.5
ComponentsCount 获取已设置的组件数量(用于调试)
func (*Context) CreateJWTSession ¶ added in v0.1.1
func (c *Context) CreateJWTSession(secretKey string, duration time.Duration, payload types.H) (string, error)
CreateJWTSession 创建JWT会话
func (*Context) ErrorWithCode ¶ added in v0.1.5
ErrorWithCode 使用错误处理包的错误响应
func (*Context) GenerateJWT ¶ added in v0.1.1
func (c *Context) GenerateJWT(payload JWTPayload) (string, error)
GenerateJWT 生成JWT令牌(需要JWT适配器)
func (*Context) GenerateRequestID ¶ added in v0.1.5
GenerateRequestID 生成基于UUID v5标准的请求ID 使用时间戳和随机数作为名称,确保唯一性
func (*Context) GenerateTokens ¶ added in v0.1.5
func (c *Context) GenerateTokens(userClaims UserClaims, config ...*OAuthConfig) (*TokenResponse, error)
GenerateTokens 生成OAuth令牌对
func (*Context) GetGlobalCache ¶ added in v0.1.5
GetGlobalCache 获取全局缓存
func (*Context) GetIntSlice ¶ added in v0.1.1
GetIntSlice 获取整型切片 使用 strings.FieldsFunc 自动过滤空值和处理分隔符
func (*Context) GetJWTPayload ¶ added in v0.1.5
func (c *Context) GetJWTPayload() JWTPayload
GetJWTPayload 获取JWT载荷
func (*Context) HasAllRoles ¶ added in v0.1.5
HasAllRoles 判断是否同时拥有所有指定角色
func (*Context) HasAnyRole ¶ added in v0.1.5
HasAnyRole 判断是否拥有任意一个指定角色
func (*Context) HasComponents ¶ added in v0.1.5
HasComponents 检查是否已初始化组件
func (*Context) JWTClaimString ¶ added in v0.1.5
JWTClaimString 获取JWT载荷中的字符串声明
func (*Context) JWTClaimStrings ¶ added in v0.1.5
JWTClaimStrings 获取JWT载荷中的字符串数组声明
func (*Context) Language ¶ added in v0.1.1
Language 获取客户端语言 使用 golang.org/x/text/language 标准库解析 Accept-Language 头
func (*Context) NewSSEClient ¶ added in v0.1.1
NewSSEClient 创建新的 SSE 客户端连接
func (*Context) NewSSEClientWithOptions ¶ added in v0.1.5
NewSSEClientWithOptions 创建带选项的 SSE 客户端
func (*Context) Next ¶ added in v0.1.5
func (c *Context) Next()
Next 覆盖gin.Context的Next方法,支持中间件管理器的控制
func (*Context) PageResponse ¶
PageResponse 分页响应方法
func (*Context) PaginateResponse ¶ added in v0.1.5
PaginateResponse 组合 Paginate 与 PageResponse
func (*Context) RefreshJWTSession ¶ added in v0.1.1
RefreshJWTSession 刷新JWT会话
func (*Context) RefreshTokens ¶ added in v0.1.5
func (c *Context) RefreshTokens(refreshToken string, config ...*OAuthConfig) (*TokenResponse, error)
RefreshTokens 刷新令牌
func (*Context) RequireJWT ¶ added in v0.1.1
func (c *Context) RequireJWT(secretKey ...string) (JWTPayload, bool)
RequireJWT 要求JWT令牌有效并返回载荷
func (*Context) RequireParams ¶
RequireParams 检查必需参数
func (*Context) RootDomain ¶
RootDomain 获取当前访问的根域名 使用 golang.org/x/net/publicsuffix 获取 eTLD+1 (有效顶级域名+1级) 例如: www.example.com -> example.com, blog.example.co.uk -> example.co.uk
func (*Context) SaveUploadedFile ¶
func (c *Context) SaveUploadedFile(file *multipart.FileHeader, config types.UploadConfig) (string, error)
SaveUploadedFile 保存上传文件
func (*Context) ServerError ¶ added in v0.1.5
ServerError 服务器错误响应 (500)
func (*Context) SessionGetString ¶ added in v0.1.1
SessionGetString 从会话中获取字符串值
func (*Context) SetCSRFToken ¶ added in v0.1.5
SetCSRFToken 设置CSRF令牌
func (*Context) SetErrorHandler ¶ added in v0.1.5
func (c *Context) SetErrorHandler(handler types.ErrorHandler)
SetErrorHandler 设置错误处理器
func (*Context) SetJWTAdapter ¶ added in v0.1.5
func (c *Context) SetJWTAdapter(adapter *JWTAdapter)
SetJWTAdapter 设置JWT适配器
func (*Context) SetJWTPayload ¶ added in v0.1.5
func (c *Context) SetJWTPayload(payload JWTPayload)
SetJWTPayload 设置JWT载荷到上下文
func (*Context) SetSecureHeaders ¶ added in v0.1.1
func (c *Context) SetSecureHeaders()
SetSecureHeaders 设置常用安全头
func (*Context) SetXFrameOptions ¶ added in v0.1.1
SetXFrameOptions 设置X-Frame-Options头
func (*Context) StreamFile ¶ added in v0.1.1
StreamFile 以 attachment 形式发送文件
func (*Context) SuccessWithMsg ¶
SuccessWithMsg 成功响应带自定义消息
func (*Context) Unauthorized ¶ added in v0.1.1
Unauthorized 未授权响应
func (*Context) ValidateFile ¶
func (c *Context) ValidateFile(file *multipart.FileHeader, config types.UploadConfig) error
ValidateFile 验证上传文件
func (*Context) ValidateJWT ¶ added in v0.1.1
func (c *Context) ValidateJWT(token ...string) (JWTPayload, error)
ValidateJWT 验证JWT令牌(需要JWT适配器)
func (*Context) ValidationError ¶ added in v0.1.5
ValidationError 验证错误响应 (422)
func (*Context) WithComponents ¶ added in v0.1.5
func (c *Context) WithComponents(cache *cache.Cache[string, any], errorHandler types.ErrorHandler, jwtAdapter *JWTAdapter, sseHub *sse.Hub, ) *Context
WithComponents 设置多个组件(链式调用)
type DefaultErrorHandler ¶ added in v0.1.5
type DefaultErrorHandler struct {
SensitiveFilter bool
}
DefaultErrorHandler 默认错误处理器
func (*DefaultErrorHandler) HandleError ¶ added in v0.1.5
func (h *DefaultErrorHandler) HandleError(ctx types.RequestContext, err error)
HandleError 处理错误
type DefaultLogger ¶ added in v0.1.5
type DefaultLogger struct {
// contains filtered or unexported fields
}
DefaultLogger 基于 log/slog 的默认日志实现
func NewDefaultLogger ¶ added in v0.1.5
func NewDefaultLogger(prefix string) *DefaultLogger
NewDefaultLogger 创建默认日志实例
func (*DefaultLogger) Debug ¶ added in v0.1.5
func (l *DefaultLogger) Debug(format string, args ...any)
Debug 记录调试信息(仅在调试模式下输出)
func (*DefaultLogger) Error ¶ added in v0.1.5
func (l *DefaultLogger) Error(format string, args ...any)
Error 记录错误日志(在所有模式下输出)
func (*DefaultLogger) Info ¶ added in v0.1.5
func (l *DefaultLogger) Info(format string, args ...any)
Info 记录信息日志(仅在调试模式下输出)
func (*DefaultLogger) Warn ¶ added in v0.1.5
func (l *DefaultLogger) Warn(format string, args ...any)
Warn 记录警告日志(在所有模式下输出)
type DocBuilder ¶ added in v0.1.5
type DocBuilder struct {
// contains filtered or unexported fields
}
DocBuilder 帮助以流畅、可链式的方式构建 RouteOption 函数列表。
func (*DocBuilder) AsOption ¶ added in v0.1.5
func (b *DocBuilder) AsOption() RouteOption
AsOption 通过合并所有累积的文档选项返回单个 RouteOption。 这在功能上等同于 Build(),存在是为了命名的灵活性和可读性。
您可以使用 Build() 或 AsOption(),取决于哪种更符合您的代码风格。
示例:
okapi.Get("/books", handler, okapi.Doc().response(Book{}).AsOption())
func (*DocBuilder) BearerAuth ¶ added in v0.1.5
func (b *DocBuilder) BearerAuth() *DocBuilder
BearerAuth 将路由标记为需要Bearer令牌身份验证。
func (*DocBuilder) Build ¶ added in v0.1.5
func (b *DocBuilder) Build() RouteOption
Build 返回由所有累积的文档选项组成的单个 RouteOption。 此方法旨在直接传递给路由注册函数。
示例:
okapi.Get("/books", handler, okapi.Doc().response(Book{}).Summary("获取书籍列表").Build())
func (*DocBuilder) Deprecated ¶ added in v0.1.5
func (b *DocBuilder) Deprecated() *DocBuilder
Deprecated 将路由标记为已弃用
func (*DocBuilder) Description ¶ added in v0.1.5
func (b *DocBuilder) Description(description string) *DocBuilder
Description 为路由文档添加描述。
func (*DocBuilder) ErrorResponse ¶ added in v0.1.5
func (b *DocBuilder) ErrorResponse(status int, v any) *DocBuilder
ErrorResponse 为特定HTTP状态码定义错误响应架构 在路由的OpenAPI文档中。 已弃用:此函数已弃用,请使用Response(status, v)。
参数:
- status: HTTP状态码(例如:400、404、500)
- v: Go值(例如:结构体实例),其类型将用于生成 错误响应的OpenAPI架构
func (*DocBuilder) Header ¶ added in v0.1.5
func (b *DocBuilder) Header(name, typ, desc string, required bool) *DocBuilder
Header 为路由添加文档化的请求头。 name: 请求头名称 typ: 请求头值类型(例如:"string", "int") desc: 请求头描述 required: 请求头是否为必需
func (*DocBuilder) Hide ¶ added in v0.1.5
func (b *DocBuilder) Hide() *DocBuilder
Hide 将路由标记为从 OpenAPI 文档中排除。
func (*DocBuilder) OperationID ¶ added in v0.1.5
func (b *DocBuilder) OperationID(operationID string) *DocBuilder
OperationID 为OpenAPI文档中的操作设置唯一标识符。
func (*DocBuilder) PathParam ¶ added in v0.1.5
func (b *DocBuilder) PathParam(name, typ, desc string) *DocBuilder
PathParam 为路由添加文档化的路径参数。 name: 参数名称 typ: 参数类型(例如:"string", "int") desc: 参数描述
func (*DocBuilder) QueryParam ¶ added in v0.1.5
func (b *DocBuilder) QueryParam(name, typ, desc string, required bool) *DocBuilder
QueryParam 为路由添加文档化的查询参数。 name: 参数名称 typ: 参数类型(例如:"string", "int") desc: 参数描述 required: 参数是否为必需
func (*DocBuilder) RequestBody ¶ added in v0.1.5
func (b *DocBuilder) RequestBody(v any) *DocBuilder
RequestBody 使用提供的值将请求体架构添加到路由文档中。
func (*DocBuilder) Response ¶ added in v0.1.5
func (b *DocBuilder) Response(statusOrValue any, vOptional ...any) *DocBuilder
Response 为路由的OpenAPI文档注册响应架构。 可以用两种方式使用:
- DocResponse(status int, value any) - 为指定HTTP状态码定义响应架构(例如:200、1、01、400)。
- DocResponse(value any) - DocResponse(200, value)的简写形式。
示例:
DocResponse(201, CreatedResponse{}) // 201 Created响应
DocResponse(400, ErrorResponse{}) // 400 Bad Request响应
DocResponse(Response{}) // 响应:默认状态200
func (*DocBuilder) ResponseHeader ¶ added in v0.1.5
func (b *DocBuilder) ResponseHeader(name, typ string, desc ...string) *DocBuilder
ResponseHeader 为路由文档添加响应头 name: 响应头名称 typ: 响应头值类型(例如:"string", "int") desc: 响应头描述,可选
func (*DocBuilder) Summary ¶ added in v0.1.5
func (b *DocBuilder) Summary(summary string) *DocBuilder
Summary 为路由文档添加简短的摘要描述。
func (*DocBuilder) Tags ¶ added in v0.1.5
func (b *DocBuilder) Tags(tags ...string) *DocBuilder
Tags 为路由文档添加一个或多个标签以进行分类。
type DocOption ¶ added in v0.1.5
type DocOption interface {
// contains filtered or unexported methods
}
DocOption 文档选项接口
func QueryParam ¶ added in v0.1.5
QueryParam 定义查询参数
func RequestBody ¶ added in v0.1.5
func RequestBody(value interface{}) DocOption
RequestBody 定义请求体类型
func Response ¶ added in v0.1.5
func Response(statusOrValue interface{}, valueOptional ...interface{}) DocOption
Response 定义响应类型
type ExternalDocs ¶ added in v0.1.5
type ExternalDocs struct {
Extensions map[string]any `json:"-" yaml:"-"`
Origin *Origin `json:"__origin__,omitempty" yaml:"__origin__,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
URL string `json:"url,omitempty" yaml:"url,omitempty"`
}
func (*ExternalDocs) ToOpenAPI ¶ added in v0.1.5
func (e *ExternalDocs) ToOpenAPI() *openapi3.ExternalDocs
type FileLogger ¶ added in v0.1.5
type FileLogger struct {
*DefaultLogger
// contains filtered or unexported fields
}
FileLogger 文件日志实现
func NewFileLogger ¶ added in v0.1.5
func NewFileLogger(prefix, filename string) (*FileLogger, error)
NewFileLogger 创建文件日志实例
type GinCompatLogger ¶ added in v0.1.5
type GinCompatLogger struct {
// contains filtered or unexported fields
}
GinCompatLogger Gin兼容的日志实现,将日志输出到gin的标准输出
func NewGinCompatLogger ¶ added in v0.1.5
func NewGinCompatLogger(prefix string) *GinCompatLogger
NewGinCompatLogger 创建Gin兼容的日志实例
func (*GinCompatLogger) Debug ¶ added in v0.1.5
func (l *GinCompatLogger) Debug(format string, args ...any)
Debug 记录调试信息(仅在调试模式下输出)
func (*GinCompatLogger) Error ¶ added in v0.1.5
func (l *GinCompatLogger) Error(format string, args ...any)
Error 记录错误日志(在所有模式下输出)
func (*GinCompatLogger) Info ¶ added in v0.1.5
func (l *GinCompatLogger) Info(format string, args ...any)
Info 记录信息日志(仅在调试模式下输出)
func (*GinCompatLogger) Warn ¶ added in v0.1.5
func (l *GinCompatLogger) Warn(format string, args ...any)
Warn 记录警告日志(在所有模式下输出)
type Handler ¶
type Handler interface {
// GetHandler 根据动作获取处理函数
GetHandler(action string) (HandlerFunc, bool)
// SetHandler 设置处理函数
SetHandler(action string, handlerFunc HandlerFunc)
// Clone 克隆当前处理器实例
Clone() Handler
// Handlers 获取所有处理函数映射
Handlers() map[string]HandlerFunc
}
Handler 接口定义了处理程序的基本方法
type HandlerFunc ¶
type HandlerFunc func(*Context)
HandlerFunc 定义处理函数类型
func CustomSecurityHeadersMiddleware ¶ added in v0.1.5
func CustomSecurityHeadersMiddleware(config SecurityHeadersConfig) HandlerFunc
CustomSecurityHeadersMiddleware 可定制的安全HTTP头中间件
func RateLimitMiddleware ¶ added in v0.1.5
func RateLimitMiddleware(config RateLimitConfig) HandlerFunc
RateLimitMiddleware 增强版限流中间件
func Route ¶ added in v0.1.5
func Route(method, path string, handler HandlerFunc) (string, HandlerFunc)
Route 创建路由处理映射
func SecurityHeadersMiddleware ¶ added in v0.1.5
func SecurityHeadersMiddleware() HandlerFunc
SecurityHeadersMiddleware 安全HTTP头中间件
type JWTAdapter ¶ added in v0.1.5
type JWTAdapter struct {
// contains filtered or unexported fields
}
JWTAdapter 最简 JWT 适配器(HS256)
func (*JWTAdapter) Close ¶ added in v0.1.5
func (a *JWTAdapter) Close() error
func (*JWTAdapter) GenerateToken ¶ added in v0.1.5
func (a *JWTAdapter) GenerateToken(payload JWTPayload) (string, error)
GenerateToken 生成 HS256 JWT
func (*JWTAdapter) IsTokenRevoked ¶ added in v0.1.5
func (a *JWTAdapter) IsTokenRevoked(jti string) bool
IsTokenRevoked 判断撤销
func (*JWTAdapter) RevokeToken ¶ added in v0.1.5
func (a *JWTAdapter) RevokeToken(jti string, exp time.Time) error
RevokeToken 撤销
func (*JWTAdapter) ValidateToken ¶ added in v0.1.5
func (a *JWTAdapter) ValidateToken(tokenStr string) (JWTPayload, error)
ValidateToken 验证并返回载荷
func (*JWTAdapter) WithTimeout ¶ added in v0.1.5
func (a *JWTAdapter) WithTimeout(d time.Duration) *JWTAdapter
type JWTAuthRoutesConfig ¶ added in v0.1.5
type JWTAuthRoutesConfig struct {
BasePath string
AccessTokenTTL time.Duration
RefreshTokenTTL time.Duration
Authenticate func(*Context) (*types.AuthInfo, error)
ResponseBuilder func(*Context, *types.AuthInfo, JWTTokens) interface{}
PostLogin func(*Context, *types.AuthInfo, JWTTokens)
PostLogout func(*Context, *types.AuthInfo)
}
JWTAuthRoutesConfig 配置自动化认证路由
type JWTPayload ¶ added in v0.1.1
JWTPayload 通用载荷
type JWTTokens ¶ added in v0.1.5
type JWTTokens struct {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token,omitempty"`
}
JWTTokens 登录/刷新返回的令牌信息
type License ¶ added in v0.1.5
type License struct {
Extensions map[string]any `json:"-" yaml:"-"` // OpenAPI规范之外的自定义扩展
Name string `json:"name" yaml:"name"` // 必需的许可证名称(例如:"MIT")
URL string `json:"url,omitempty" yaml:"url,omitempty"` // 可选的许可证URL
}
License 包含API的许可证信息。 遵循OpenAPI规范格式。
type Logger ¶ added in v0.1.5
type Logger interface {
// Debug 记录调试信息
Debug(format string, args ...any)
// Info 记录信息日志
Info(format string, args ...any)
// Warn 记录警告日志
Warn(format string, args ...any)
// Error 记录错误日志
Error(format string, args ...any)
}
Logger 定义统一的日志接口
type LoggerConfig ¶ added in v0.1.5
type LoggerConfig struct {
// UseDefaultLogger 是否使用默认的 slog 实现
UseDefaultLogger bool
// CustomLogger 自定义日志实现
CustomLogger Logger
}
LoggerConfig 日志配置
func DefaultLoggerConfig ¶ added in v0.1.5
func DefaultLoggerConfig() *LoggerConfig
DefaultLoggerConfig 返回默认日志配置
func (*LoggerConfig) GetLogger ¶ added in v0.1.5
func (config *LoggerConfig) GetLogger(prefix string) Logger
GetLogger 获取日志实例
type MemoryRateLimiter ¶ added in v0.1.5
type MemoryRateLimiter struct {
// contains filtered or unexported fields
}
MemoryRateLimiter 内存限流器
func (*MemoryRateLimiter) Allow ¶ added in v0.1.5
func (rl *MemoryRateLimiter) Allow(key string) (bool, time.Time)
Allow 检查是否允许请求
func (*MemoryRateLimiter) Reset ¶ added in v0.1.5
func (rl *MemoryRateLimiter) Reset(key string)
Reset 重置指定键的限流状态
type NoOpLogger ¶ added in v0.1.5
type NoOpLogger struct{}
NoOpLogger 空操作日志实现(用于禁用日志)
func (*NoOpLogger) Debug ¶ added in v0.1.5
func (l *NoOpLogger) Debug(format string, args ...any)
Debug 空操作
func (*NoOpLogger) Error ¶ added in v0.1.5
func (l *NoOpLogger) Error(format string, args ...any)
Error 空操作
func (*NoOpLogger) Info ¶ added in v0.1.5
func (l *NoOpLogger) Info(format string, args ...any)
Info 空操作
func (*NoOpLogger) Warn ¶ added in v0.1.5
func (l *NoOpLogger) Warn(format string, args ...any)
Warn 空操作
type OAuthConfig ¶ added in v0.1.5
type OAuthConfig struct {
AccessTokenTTL time.Duration // 访问令牌过期时间,默认15分钟
RefreshTokenTTL time.Duration // 刷新令牌过期时间,默认7天
Issuer string // 签发者
DefaultScope string // 默认权限范围
}
OAuthConfig OAuth配置
func DefaultOAuthConfig ¶ added in v0.1.5
func DefaultOAuthConfig() *OAuthConfig
DefaultOAuthConfig 默认OAuth配置
type OAuthFlow ¶ added in v0.1.5
type OAuthFlows ¶ added in v0.1.5
type OAuthFlows struct {
Implicit *OAuthFlow
Password *OAuthFlow
ClientCredentials *OAuthFlow
AuthorizationCode *OAuthFlow
}
func (*OAuthFlows) ToOpenAPI ¶ added in v0.1.5
func (flows *OAuthFlows) ToOpenAPI() *openapi3.OAuthFlows
type OpenAPI ¶ added in v0.1.5
type OpenAPI struct {
Title string // API标题
Version string // API版本
Servers Servers // API托管服务器URL列表
License License // API许可证信息
Contact Contact // API维护者联系信息
// SecuritySchemes 为OpenAPI规范定义安全方案。
SecuritySchemes SecuritySchemes
ExternalDocs *ExternalDocs
}
OpenAPI 包含生成OpenAPI/Swagger文档的配置。 包含API的元数据和文档信息。
func (OpenAPI) ToOpenAPISpec ¶ added in v0.1.5
ToOpenAPISpec 将OpenAPI转换为*openapi3.T。 将自定义OpenAPI配置转换为完整的OpenAPI规范对象。
type PathValidationError ¶ added in v0.1.5
type PathValidationError struct {
RouteError
Path string `json:"path"`
Violations []string `json:"violations"`
Suggestions []string `json:"suggestions"`
}
PathValidationError 路径验证错误
func NewPathValidationError ¶ added in v0.1.5
func NewPathValidationError(path string, violations []string, suggestions []string) *PathValidationError
NewPathValidationError 创建路径验证错误
type PatternSegment ¶ added in v0.1.5
type PatternSegment struct {
Type SegmentType `json:"type"` // 段类型:静态、参数、通配符
Value string `json:"value"` // 段值
IsParam bool `json:"is_param"` // 是否为参数
Name string `json:"name"` // 参数名(如果是参数段)
Position int `json:"position"` // 段在路径中的位置
}
PatternSegment 路由段
type RESTOption ¶ added in v0.1.5
type RESTOption func(*restConfig)
RESTOption 自定义 REST 注册行为
func RESTWithBasePath ¶ added in v0.1.5
func RESTWithBasePath(path string) RESTOption
RESTWithBasePath 自定义基础路径
func RESTWithDoc ¶ added in v0.1.5
func RESTWithDoc(action string, opts ...DocOption) RESTOption
RESTWithDoc 为指定动作添加文档选项
func RESTWithDocsAll ¶ added in v0.1.5
func RESTWithDocsAll(opts ...DocOption) RESTOption
RESTWithDocsAll 为所有动作添加统一的文档配置
func RESTWithIDParam ¶ added in v0.1.5
func RESTWithIDParam(name string) RESTOption
RESTWithIDParam 自定义 ID 参数名
func RESTWithMiddleware ¶ added in v0.1.5
func RESTWithMiddleware(m ...HandlerFunc) RESTOption
RESTWithMiddleware 添加全局中间件
func RESTWithRouteOptions ¶ added in v0.1.5
func RESTWithRouteOptions(action string, options ...interface{}) RESTOption
RESTWithRouteOptions 添加指定动作的额外参数(中间件或文档)
type RateLimitConfig ¶ added in v0.1.5
type RateLimitConfig struct {
RequestsPerWindow int // 时间窗口内允许的请求数
WindowSize time.Duration // 时间窗口大小
KeyFunc func(*Context) string // 获取限流键的函数
}
RateLimitConfig 限流配置
type RateLimiter ¶ added in v0.1.5
type RateLimiter interface {
Allow(key string) (allowed bool, resetTime time.Time)
Reset(key string)
Stats(key string) (requests int, resetTime time.Time)
}
RateLimiter 限流器接口
func NewRateLimiter ¶ added in v0.1.5
func NewRateLimiter(config RateLimitConfig) RateLimiter
NewRateLimiter 创建新的限流器
type RefreshRequest ¶ added in v0.1.5
type RefreshRequest struct {
RefreshToken string `json:"refresh_token" binding:"required"` // 刷新令牌
Scope string `json:"scope,omitempty"` // 可选的权限范围
}
RefreshRequest 刷新令牌请求结构
type ResourceHandler ¶ added in v0.1.1
type ResourceHandler interface {
Index(*Context) // GET /resources - 列表
Show(*Context) // GET /resources/:id - 详情
Create(*Context) // POST /resources - 创建
Update(*Context) // PUT /resources/:id - 更新
Delete(*Context) // DELETE /resources/:id - 删除
}
ResourceHandler 定义资源处理器接口
type RestfulHandler ¶ added in v0.1.1
type RestfulHandler struct{}
RestfulHandler 提供 ResourceHandler 接口的默认实现
func (*RestfulHandler) Create ¶ added in v0.1.1
func (h *RestfulHandler) Create(c *Context)
Create 创建资源
func (*RestfulHandler) Delete ¶ added in v0.1.1
func (h *RestfulHandler) Delete(c *Context)
Delete 删除资源
func (*RestfulHandler) Index ¶ added in v0.1.1
func (h *RestfulHandler) Index(c *Context)
Index 获取资源列表
func (*RestfulHandler) Update ¶ added in v0.1.1
func (h *RestfulHandler) Update(c *Context)
Update 更新资源
type RouteError ¶ added in v0.1.5
type RouteError struct {
Code int `json:"code"`
Type string `json:"type"`
Message string `json:"message"`
Route string `json:"route,omitempty"`
Details map[string]interface{} `json:"details,omitempty"`
Cause error `json:"-"`
Timestamp time.Time `json:"timestamp"`
}
RouteError 路由错误基类
type RouteHandler ¶ added in v0.1.5
type RouteHandler struct {
BasicHandler
// contains filtered or unexported fields
}
RouteHandler 基于路由的处理器
func NewRouteHandler ¶ added in v0.1.5
func NewRouteHandler(prefix string) *RouteHandler
NewRouteHandler 创建新的路由处理器
func (*RouteHandler) GetRouteHandler ¶ added in v0.1.5
func (r *RouteHandler) GetRouteHandler(method, path string) (HandlerFunc, bool)
GetRouteHandler 获取路由处理函数
func (*RouteHandler) SetRouteHandler ¶ added in v0.1.5
func (r *RouteHandler) SetRouteHandler(method, path string, handlerFunc HandlerFunc)
SetRouteHandler 设置路由处理函数
type RouteOption ¶ added in v0.1.5
type RouteOption func(*APIRoute)
RouteOption 定义一个修改APIRoute文档属性的函数类型
func DocAutoPathParams ¶ added in v0.1.5
func DocAutoPathParams() RouteOption
DocAutoPathParams 自动从路由路径提取路径参数 并将其添加到文档中。 跳过已经定义的参数。
func DocBearerAuth ¶ added in v0.1.5
func DocBearerAuth() RouteOption
DocBearerAuth 标记路由需要Bearer令牌认证
func DocDescription ¶ added in v0.1.5
func DocDescription(description string) RouteOption
DocDescription 为路由设置描述
func DocErrorResponse ¶ added in v0.1.5
func DocErrorResponse(status int, v any) RouteOption
DocErrorResponse 为路由的OpenAPI文档中的特定HTTP状态码 定义错误响应架构 Deprecated: This function is deprecated in favor of DocResponse(status, v).
Parameters:
- status: the HTTP status code (e.g., 400, 404, 500).
- v: a Go value (e.g., a struct instance) whose type will be used to generate the OpenAPI schema for the error response.
返回:
- 一个RouteOption函数,将错误架构添加到路由的文档中
func DocHeader ¶ added in v0.1.5
func DocHeader(name, typ, desc string, required bool) RouteOption
DocHeader 向路由文档添加请求头参数 name: 请求头名称 typ: 请求头值类型(例如:"string", "int") desc: 请求头描述 required: 请求头是否为必需
func DocOperationID ¶ added in v0.1.5
func DocOperationID(operationID string) RouteOption
func DocPathParam ¶ added in v0.1.5
func DocPathParam(name, typ, desc string) RouteOption
DocPathParam 向路由文档添加路径参数 name: 参数名称 typ: 参数类型(例如:"string", "int", "uuid") desc: 参数描述
func DocQueryParam ¶ added in v0.1.5
func DocQueryParam(name, typ, desc string, required bool) RouteOption
DocQueryParam 向路由文档添加查询参数 name: 参数名称 typ: 参数类型(例如:"string", "int") desc: 参数描述 required: 参数是否为必需
func DocRequestBody ¶ added in v0.1.5
func DocRequestBody(v any) RouteOption
DocRequestBody 为路由定义请求体架构 v: Go值,其类型将用于生成请求架构
func DocResponse ¶ added in v0.1.5
func DocResponse(statusOrValue any, vOptional ...any) RouteOption
DocResponse 为路由的OpenAPI文档注册响应架构。 可以以两种方式使用:
- DocResponse(status int, value any) - 为指定HTTP状态码定义响应架构(例如:200、201、400)
- DocResponse(value any) - DocResponse(200, value)的简写形式
示例:
DocResponse(201, CreatedResponse{}) // 201 Created响应
DocResponse(400, ErrorResponse{}) // 400 Bad Request响应
DocResponse(response{}) // 响应:默认状态200
func DocResponseHeader ¶ added in v0.1.5
func DocResponseHeader(name, typ string, desc ...string) RouteOption
DocResponseHeader 向路由文档添加响应头 name: 响应头名称 typ: 响应头值类型(例如:"string", "int") desc: 响应头描述,可选
func DocSummary ¶ added in v0.1.5
func DocSummary(summary string) RouteOption
DocSummary 为路由设置简短的摘要描述
type RoutePattern ¶ added in v0.1.5
type RoutePattern struct {
Method string `json:"method"` // HTTP方法
Pattern string `json:"pattern"` // 原始路由模式
ParamNames []string `json:"param_names"` // 参数名列表
IsWildcard bool `json:"is_wildcard"` // 是否包含通配符
Segments []PatternSegment `json:"segments"` // 路由段列表
Priority int `json:"priority"` // 路由优先级
Hash uint64 `json:"hash"` // 路由模式哈希值
CreateTime time.Time `json:"create_time"` // 创建时间
}
RoutePattern 路由模式结构
func ParseRoutePattern ¶ added in v0.1.5
func ParseRoutePattern(method, pattern string) (*RoutePattern, error)
ParseRoutePattern 解析路由模式
func (*RoutePattern) Clone ¶ added in v0.1.5
func (rp *RoutePattern) Clone() *RoutePattern
Clone 克隆路由模式
func (*RoutePattern) Equals ¶ added in v0.1.5
func (rp *RoutePattern) Equals(other *RoutePattern) bool
Equals 检查两个路由模式是否相等
func (*RoutePattern) GetParamNames ¶ added in v0.1.5
func (rp *RoutePattern) GetParamNames() []string
GetParamNames 获取参数名列表
func (*RoutePattern) GetParamSegmentCount ¶ added in v0.1.5
func (rp *RoutePattern) GetParamSegmentCount() int
GetParamSegmentCount 获取参数段数量
func (*RoutePattern) GetSegmentCount ¶ added in v0.1.5
func (rp *RoutePattern) GetSegmentCount() int
GetSegmentCount 获取段数量
func (*RoutePattern) GetStaticSegmentCount ¶ added in v0.1.5
func (rp *RoutePattern) GetStaticSegmentCount() int
GetStaticSegmentCount 获取静态段数量
func (*RoutePattern) HasParam ¶ added in v0.1.5
func (rp *RoutePattern) HasParam(name string) bool
HasParam 检查是否包含指定参数
func (*RoutePattern) IsConflictWith ¶ added in v0.1.5
func (rp *RoutePattern) IsConflictWith(other *RoutePattern) bool
IsConflictWith 检查是否与另一个路由模式冲突
func (*RoutePattern) String ¶ added in v0.1.5
func (rp *RoutePattern) String() string
String 返回路由模式的字符串表示
func (*RoutePattern) ToMap ¶ added in v0.1.5
func (rp *RoutePattern) ToMap() map[string]interface{}
ToMap 转换为映射表示
func (*RoutePattern) Validate ¶ added in v0.1.5
func (rp *RoutePattern) Validate() error
Validate 验证路由模式的有效性
type Router ¶ added in v0.1.1
type Router struct {
// contains filtered or unexported fields
}
Router 路由管理器
func NewRouter ¶
func NewRouter(engineOrFirstOpt interface{}, opts ...RouterOption) *Router
NewRouter 创建新的路由管理器(推荐使用) 提供更简洁的初始化方式,兼容传入nil engine的旧用法
func NewRouterLegacy ¶ added in v0.1.5
NewRouterLegacy 创建新的路由管理器(保持向后兼容)
func (*Router) ANY ¶ added in v0.1.1
func (r *Router) ANY(path string, handler HandlerFunc, middleware ...HandlerFunc)
ANY 注册支持所有HTTP方法的路由
func (*Router) API ¶ added in v0.1.5
func (r *Router) API(version string) *RouterGroup
API 快捷方法 - 创建API版本路由组
func (*Router) CRUD ¶ added in v0.1.5
func (r *Router) CRUD(resource string, handler ResourceHandler, opts ...RESTOption)
CRUD 注册完整的 CRUD 资源路由(编译期校验 ResourceHandler) 等价于 REST(resource, handler, opts...)
func (*Router) DELETE ¶ added in v0.1.1
func (r *Router) DELETE(path string, handler HandlerFunc, options ...interface{})
DELETE 注册DELETE方法的路由
func (*Router) EnableSwagger ¶ added in v0.1.5
EnableSwagger 启用Swagger UI
func (*Router) GET ¶ added in v0.1.1
func (r *Router) GET(path string, handler HandlerFunc, options ...interface{})
GET 注册GET方法的路由 支持两种使用方式: 1. 传统方式: GET(path, handler, middleware...) 2. 文档方式: GET(path, handler, Summary("描述"), Response(200, User{}), middleware...)
func (*Router) GenerateOpenAPISpec ¶ added in v0.1.5
GenerateOpenAPISpec 生成OpenAPI规范
func (*Router) GetErrorHandler ¶ added in v0.1.5
func (r *Router) GetErrorHandler() errors.ErrorHandler
GetErrorHandler 获取错误处理器
func (*Router) GetHandler ¶ added in v0.1.5
GetHandler 获取路由器的处理器
func (*Router) GetJWTAdapter ¶ added in v0.1.5
func (r *Router) GetJWTAdapter() *JWTAdapter
GetJWTAdapter 获取JWT适配器
func (*Router) GracefulShutdown ¶ added in v0.1.5
GracefulShutdown 优雅地关闭服务器
func (*Router) Group ¶ added in v0.1.1
func (r *Router) Group(path string, middleware ...HandlerFunc) *RouterGroup
Group 创建或获取路由组
func (*Router) HEAD ¶ added in v0.1.1
func (r *Router) HEAD(path string, handler HandlerFunc, options ...interface{})
HEAD 注册HEAD方法的路由
func (*Router) InvalidateOpenAPICache ¶ added in v0.1.5
func (r *Router) InvalidateOpenAPICache()
InvalidateOpenAPICache 使OpenAPI缓存失效,强制重新生成
func (*Router) JWTAuthRoutes ¶ added in v0.1.5
func (r *Router) JWTAuthRoutes(cfg JWTAuthRoutesConfig)
JWTAuthRoutes 注册标准的登录/刷新/注销路由
func (*Router) JWTMiddleware ¶ added in v0.1.5
func (r *Router) JWTMiddleware() gin.HandlerFunc
JWTMiddleware 创建JWT中间件(手动添加到需要认证的路由)
func (*Router) OPTIONS ¶ added in v0.1.1
func (r *Router) OPTIONS(path string, handler HandlerFunc, options ...interface{})
OPTIONS 注册OPTIONS方法的路由
func (*Router) PATCH ¶ added in v0.1.1
func (r *Router) PATCH(path string, handler HandlerFunc, options ...interface{})
PATCH 注册PATCH方法的路由
func (*Router) POST ¶ added in v0.1.1
func (r *Router) POST(path string, handler HandlerFunc, options ...interface{})
POST 注册POST方法的路由
func (*Router) PUT ¶ added in v0.1.1
func (r *Router) PUT(path string, handler HandlerFunc, options ...interface{})
PUT 注册PUT方法的路由
func (*Router) REST ¶ added in v0.1.5
func (r *Router) REST(resource string, handler ResourceHandler, opts ...RESTOption)
REST 注册带自定义选项的 REST 风格路由
func (*Router) Register ¶ added in v0.1.1
func (r *Router) Register(method, path string, handler HandlerFunc, middleware ...HandlerFunc)
Register 注册路由
func (*Router) RequireAnyRole ¶ added in v0.1.5
func (r *Router) RequireAnyRole(roles ...string) HandlerFunc
RequireAnyRole 允许用户具备任意一个角色即可通过
func (*Router) RequireAuth ¶ added in v0.1.5
func (r *Router) RequireAuth(scopes ...string) HandlerFunc
RequireAuth 创建需要OAuth认证的中间件
func (*Router) RequireRoles ¶ added in v0.1.5
func (r *Router) RequireRoles(roles ...string) HandlerFunc
RequireRoles 要求当前用户同时具备指定角色
func (*Router) Resource ¶ added in v0.1.1
func (r *Router) Resource(path string, handler ResourceHandler, middleware ...HandlerFunc)
Resource 注册 RESTful 资源路由
func (*Router) RunWithContext ¶ added in v0.1.5
func (r *Router) RunWithContext(ctx context.Context, config ...ServerConfig) error
RunWithContext 使用指定的上下文启动服务器 当上下文被取消时,服务器将优雅地关闭
func (*Router) RunWithContextString ¶ added in v0.1.5
RunWithContextString 使用给定的上下文和地址字符串启动服务器
func (*Router) RunWithGracefulShutdown ¶ added in v0.1.5
func (r *Router) RunWithGracefulShutdown(config ServerConfig) error
RunWithGracefulShutdown 启动服务器并支持优雅停机
func (*Router) SetEmbed ¶ added in v0.1.5
SetEmbed 设置嵌入式文件系统静态资源服务 urlPrefix: URL路径前缀,如 "/static" 或 "/assets" embedFS: embed.FS 文件系统 subPaths: 可选的子路径,用于移除embed.FS中的路径前缀
使用示例:
//go:embed static/*
var staticFS embed.FS
router.SetEmbed("/static", staticFS, "static")
func (*Router) SetEmbedFile ¶ added in v0.1.5
SetEmbedFile 设置单个嵌入文件的路由 urlPath: URL路径,如 "/favicon.ico" embedFS: embed.FS 文件系统 filePath: 文件在embed.FS中的路径
使用示例:
//go:embed favicon.ico
var faviconFS embed.FS
router.SetEmbedFile("/favicon.ico", faviconFS, "favicon.ico")
func (*Router) SetGlobalCacheMiddleware ¶ added in v0.1.4
func (r *Router) SetGlobalCacheMiddleware(defaultExpiration, cleanupInterval time.Duration) HandlerFunc
SetGlobalCacheMiddleware 返回一个缓存初始化中间件,会自动创建缓存实例
参数:
- defaultExpiration: 缓存项默认过期时间
- cleanupInterval: 清理过期项的时间间隔
func (*Router) SetPersistCacheMiddleware ¶ added in v0.1.4
func (r *Router) SetPersistCacheMiddleware(defaultExpiration, cleanupInterval time.Duration, persistPath string, autoPersistInterval time.Duration) HandlerFunc
SetPersistCacheMiddleware 返回一个带持久化功能的缓存初始化中间件
参数:
- defaultExpiration: 缓存项默认过期时间
- cleanupInterval: 清理过期项的时间间隔
- persistPath: 持久化文件路径
- autoPersistInterval: 自动持久化时间间隔
func (*Router) SetZipFS ¶ added in v0.1.5
func (r *Router) SetZipFS(zipPath, urlPrefix string, options ...func(*ZipFSConfig)) error
SetZipFS 设置zip文件系统静态资源服务 zipPath: zip文件路径 urlPrefix: URL路径前缀,如 "/static" 或 "/app" options: 可选配置项
使用示例:
router.SetZipFS("./web.zip", "/app", WithHotReload(5*time.Second))
router.SetZipFS("./assets.zip", "/static", WithIndexFile("main.html"))
func (*Router) SetZipFSWithMiddleware ¶ added in v0.1.5
func (r *Router) SetZipFSWithMiddleware(config ZipFSConfig, middlewares ...gin.HandlerFunc) error
SetZipFSWithMiddleware 设置带中间件的zip文件系统服务 config: zip文件系统配置 middlewares: 中间件列表
使用示例:
config := NewZipFSConfig("./app.zip", "/app", WithHotReload(3*time.Second))
router.SetZipFSWithMiddleware(config, corsMiddleware(), authMiddleware())
func (*Router) SetZipFile ¶ added in v0.1.5
func (r *Router) SetZipFile(urlPath, zipPath, filePath string, options ...ZipFileOption) error
SetZipFile 设置单个zip文件的路由服务 urlPath: URL路径,如 "/api/docs" zipPath: zip文件路径 filePath: 文件在zip中的路径 options: 可选配置项
使用示例:
router.SetZipFile("/api.json", "./docs.zip", "api.json", WithFileHotReload(3*time.Second))
router.SetZipFile("/favicon.ico", "./assets.zip", "favicon.ico")
func (*Router) StaticFiles ¶ added in v0.1.5
func (r *Router) StaticFiles(relativePath, root string, middleware ...HandlerFunc)
Static 静态文件服务增强
func (*Router) Upload ¶ added in v0.1.5
func (r *Router) Upload(path string, handler func(*Context, *multipart.FileHeader) error, middleware ...HandlerFunc)
Upload 文件上传路由
func (*Router) UseGin ¶ added in v0.1.1
func (r *Router) UseGin(middleware ...gin.HandlerFunc)
UseGin 直接使用 gin.HandlerFunc 类型的中间件
func (*Router) WithHandler ¶ added in v0.1.5
WithHandler 设置路由器的处理器
type RouterConfig ¶ added in v0.1.5
RouterConfig 路由器配置
func DefaultRouterConfig ¶ added in v0.1.5
func DefaultRouterConfig() *RouterConfig
DefaultRouterConfig 默认路由器配置
type RouterGroup ¶ added in v0.1.1
type RouterGroup struct {
// contains filtered or unexported fields
}
RouterGroup 路由组
func (*RouterGroup) ANY ¶ added in v0.1.1
func (rg *RouterGroup) ANY(path string, handler HandlerFunc, middleware ...HandlerFunc)
ANY 注册支持所有HTTP方法的路由
func (*RouterGroup) DELETE ¶ added in v0.1.1
func (rg *RouterGroup) DELETE(path string, handler HandlerFunc, options ...interface{})
DELETE 注册DELETE方法的路由
func (*RouterGroup) GET ¶ added in v0.1.1
func (rg *RouterGroup) GET(path string, handler HandlerFunc, options ...interface{})
GET 注册GET方法的路由 支持两种使用方式: 1. 传统方式: GET(path, handler, middleware...) 2. 文档方式: GET(path, handler, Summary("描述"), Response(200, User{}), middleware...)
func (*RouterGroup) GetHandler ¶ added in v0.1.5
func (rg *RouterGroup) GetHandler() Handler
GetHandler 获取路由组的处理器
func (*RouterGroup) Group ¶ added in v0.1.1
func (rg *RouterGroup) Group(path string, middleware ...HandlerFunc) *RouterGroup
Group 创建子路由组
func (*RouterGroup) HEAD ¶ added in v0.1.1
func (rg *RouterGroup) HEAD(path string, handler HandlerFunc, options ...interface{})
HEAD 注册HEAD方法的路由
func (*RouterGroup) OPTIONS ¶ added in v0.1.1
func (rg *RouterGroup) OPTIONS(path string, handler HandlerFunc, options ...interface{})
OPTIONS 注册OPTIONS方法的路由
func (*RouterGroup) PATCH ¶ added in v0.1.1
func (rg *RouterGroup) PATCH(path string, handler HandlerFunc, options ...interface{})
PATCH 注册PATCH方法的路由
func (*RouterGroup) POST ¶ added in v0.1.1
func (rg *RouterGroup) POST(path string, handler HandlerFunc, options ...interface{})
POST 注册POST方法的路由
func (*RouterGroup) PUT ¶ added in v0.1.1
func (rg *RouterGroup) PUT(path string, handler HandlerFunc, options ...interface{})
PUT 注册PUT方法的路由
func (*RouterGroup) REST ¶ added in v0.1.5
func (rg *RouterGroup) REST(resource string, handler ResourceHandler, opts ...RESTOption)
REST 在路由组中注册 REST 风格路由
func (*RouterGroup) Register ¶ added in v0.1.1
func (rg *RouterGroup) Register(method, path string, handler HandlerFunc, middleware ...HandlerFunc)
Register 注册路由到当前组
func (*RouterGroup) Resource ¶ added in v0.1.1
func (rg *RouterGroup) Resource(path string, handler ResourceHandler, middleware ...HandlerFunc)
Resource 注册路由组内的 RESTful 资源路由
func (*RouterGroup) SetZipFS ¶ added in v0.1.5
func (rg *RouterGroup) SetZipFS(zipPath string, options ...func(*ZipFSConfig)) error
SetZipFS 为路由组设置zip文件系统静态资源服务
func (*RouterGroup) SetZipFSWithMiddleware ¶ added in v0.1.5
func (rg *RouterGroup) SetZipFSWithMiddleware(zipPath string, middlewares []gin.HandlerFunc, options ...func(*ZipFSConfig)) error
SetZipFSWithMiddleware 为路由组设置带中间件的zip文件系统服务
func (*RouterGroup) SetZipFile ¶ added in v0.1.5
func (rg *RouterGroup) SetZipFile(urlPath, zipPath, filePath string, options ...ZipFileOption) error
SetZipFile 为路由组设置单个zip文件的路由服务
func (*RouterGroup) Use ¶ added in v0.1.5
func (rg *RouterGroup) Use(middleware ...HandlerFunc)
Use 添加中间件到路由组
func (*RouterGroup) UseGin ¶ added in v0.1.5
func (rg *RouterGroup) UseGin(middleware ...gin.HandlerFunc)
UseGin 直接使用 gin.HandlerFunc 类型的中间件
func (*RouterGroup) WithMiddleware ¶ added in v0.1.5
func (rg *RouterGroup) WithMiddleware(middleware ...HandlerFunc) *RouterGroup
WithMiddleware 为RouterGroup添加中间件(链式调用)
func (*RouterGroup) WithPrefix ¶ added in v0.1.5
func (rg *RouterGroup) WithPrefix(prefix string) *RouterGroup
WithPrefix 创建带路径前缀的新RouterGroup
func (*RouterGroup) WithSecurity ¶ added in v0.1.5
func (rg *RouterGroup) WithSecurity(scheme string, scopes ...string) *RouterGroup
WithSecurity 为RouterGroup设置默认安全配置
func (*RouterGroup) WithTags ¶ added in v0.1.5
func (rg *RouterGroup) WithTags(tags ...string) *RouterGroup
WithTags 为RouterGroup设置默认标签
type RouterOption ¶ added in v0.1.5
RouterOption 路由器配置选项
func WithCORS ¶ added in v0.1.5
func WithCORS(allowOrigins ...string) RouterOption
WithCORS 添加安全的CORS中间件
func WithConfig ¶ added in v0.1.5
func WithConfig(customize func(*Config)) RouterOption
WithConfig 提供 access to 框架 Config 以便一次性调整
func WithJWT ¶ added in v0.1.5
func WithJWT(secret string, customize ...func(*SecurityConfig)) RouterOption
WithJWT 快速配置JWT密钥和安全选项
func WithMiddleware ¶ added in v0.1.5
func WithMiddleware(middlewares ...gin.HandlerFunc) RouterOption
WithMiddleware 添加全局中间件
func WithOpenAPI ¶ added in v0.1.5
func WithOpenAPI(config *OpenAPI) RouterOption
WithOpenAPI 启用OpenAPI文档生成功能
func WithRateLimit ¶ added in v0.1.5
func WithRateLimit(requestsPerMinute int) RouterOption
WithRateLimit 添加简单的内存限流中间件
func WithRateLimitEnhanced ¶ added in v0.1.5
func WithRateLimitEnhanced(requestsPerMinute int, keyFunc ...func(*Context) string) RouterOption
WithRateLimit 添加限流中间件的路由选项
func WithSecurityConfig ¶ added in v0.1.5
func WithSecurityConfig(configure func(*SecurityConfig)) RouterOption
WithSecurityConfig 提供统一的安全配置入口
func WithSecurityHeaders ¶ added in v0.1.5
func WithSecurityHeaders(config ...SecurityHeadersConfig) RouterOption
WithSecurityHeaders 添加安全头中间件的路由选项
func WithTimeout ¶ added in v0.1.5
func WithTimeout(timeout time.Duration) RouterOption
WithTimeout 添加请求超时中间件
type SchemaInfo ¶ added in v0.1.5
SchemaInfo 保存架构的额外信息以便更好地命名。 在从Bo类型生成OpenAPI架构时使用。
type SecurityConfig ¶ added in v0.1.5
type SecurityConfig struct {
// JWT配置
JWTSecretKey []byte `json:"-"` // 不序列化密钥
JWTAlgorithm string `json:"jwt_algorithm"`
JWTExpiration time.Duration `json:"jwt_expiration"`
JWTRefreshEnabled bool `json:"jwt_refresh_enabled"`
// CORS配置
CORSAllowedOrigins []string `json:"cors_allowed_origins"`
CORSAllowedMethods []string `json:"cors_allowed_methods"`
CORSAllowedHeaders []string `json:"cors_allowed_headers"`
CORSMaxAge int `json:"cors_max_age"`
CORSAllowCredentials bool `json:"cors_allow_credentials"`
// 安全头配置
SecurityHeadersEnabled bool `json:"security_headers_enabled"`
// 限流配置
RateLimitEnabled bool `json:"rate_limit_enabled"`
RateLimitRequestsPerMinute int `json:"rate_limit_requests_per_minute"`
}
SecurityConfig 安全配置结构体
func DefaultSecurityConfig ¶ added in v0.1.5
func DefaultSecurityConfig() *SecurityConfig
DefaultSecurityConfig 返回默认安全配置
func LoadSecurityConfig ¶ added in v0.1.5
func LoadSecurityConfig() (*SecurityConfig, error)
LoadSecurityConfig 从环境变量加载安全配置
func (*SecurityConfig) BuildJWTAdapter ¶ added in v0.1.5
func (c *SecurityConfig) BuildJWTAdapter() (*JWTAdapter, error)
BuildJWTAdapter 构建 JWT 适配器(目前仅支持 HS256 系列)
func (*SecurityConfig) Validate ¶ added in v0.1.5
func (c *SecurityConfig) Validate() error
ValidateSecurityConfig 验证安全配置
type SecurityHeadersConfig ¶ added in v0.1.5
type SecurityHeadersConfig struct {
XFrameOptions string // DENY, SAMEORIGIN, ALLOW-FROM uri
XContentTypeOptions bool // 是否启用 nosniff
XXSSProtection string // 1; mode=block
StrictTransportSecurity string // max-age=31536000; includeSubDomains; preload
ContentSecurityPolicy string // CSP策略字符串
ReferrerPolicy string // 引用者策略
PermissionsPolicy string // 权限策略
HideServerInfo bool // 是否隐藏服务器信息
}
SecurityHeadersConfig 安全头配置
func DefaultSecurityHeadersConfig ¶ added in v0.1.5
func DefaultSecurityHeadersConfig() SecurityHeadersConfig
DefaultSecurityHeadersConfig 返回默认安全头配置
type SecurityRequirement ¶ added in v0.1.5
type SecurityScheme ¶ added in v0.1.5
type SecuritySchemes ¶ added in v0.1.5
type SecuritySchemes []SecurityScheme
func (SecuritySchemes) ToOpenAPI ¶ added in v0.1.5
func (ss SecuritySchemes) ToOpenAPI() openapi3.SecuritySchemes
type SegmentType ¶ added in v0.1.5
type SegmentType int
SegmentType 路由段类型
const ( SegmentTypeStatic SegmentType = iota // 静态段 SegmentTypeParam // 参数段 (:param) SegmentTypeWildcard // 通配符段 (*wildcard) )
func IdentifySegmentType ¶ added in v0.1.5
func IdentifySegmentType(segment string) (SegmentType, string, error)
IdentifySegmentType 识别段类型
func (SegmentType) String ¶ added in v0.1.5
func (st SegmentType) String() string
String 返回段类型的字符串表示
type Server ¶ added in v0.1.5
type Server struct {
Extensions map[string]any `json:"-" yaml:"-"`
// 服务器URL(例如:"https://api.example.com/v1")
URL string `json:"url" yaml:"url"`
// 可选的服务器描述
Description string `json:"description,omitempty" yaml:"description,omitempty"`
}
Server 代表API托管的服务器位置
type ServerConfig ¶ added in v0.1.1
type ServerConfig struct {
Host string // 主机地址
Port string // 端口
ReadTimeout time.Duration // 读取超时
WriteTimeout time.Duration // 写入超时
MaxHeaderBytes int // 最大头部字节
CertFile string // TLS证书文件
KeyFile string // TLS密钥文件
EnableHTTP2 bool // 启用HTTP/2
GracefulTimeout time.Duration // 优雅关闭超时
}
ServerConfig 服务器配置选项
func DefaultServerConfig ¶ added in v0.1.1
func DefaultServerConfig() ServerConfig
DefaultServerConfig 返回默认服务器配置
type TokenResponse ¶ added in v0.1.5
type TokenResponse struct {
AccessToken string `json:"access_token"` // 访问令牌
RefreshToken string `json:"refresh_token"` // 刷新令牌
TokenType string `json:"token_type"` // 令牌类型,通常为"Bearer"
ExpiresIn int64 `json:"expires_in"` // 访问令牌过期时间(秒)
Scope string `json:"scope,omitempty"` // 权限范围
JTI string `json:"jti,omitempty"` // JWT ID
}
TokenResponse OAuth令牌响应结构
type URLBuilder ¶ added in v0.1.5
type URLBuilder struct {
// contains filtered or unexported fields
}
URLBuilder 结构体用于构建 URL
func (*URLBuilder) Domain ¶ added in v0.1.5
func (ub *URLBuilder) Domain(domain string) *URLBuilder
Domain 设置是否使用域名
func (*URLBuilder) Scheme ¶ added in v0.1.5
func (ub *URLBuilder) Scheme(scheme string) *URLBuilder
Scheme 设置 URL 的访问协议
func (*URLBuilder) Set ¶ added in v0.1.5
func (ub *URLBuilder) Set(query string, value interface{}) *URLBuilder
Set 设置 URL 的Query参数
type UserClaims ¶ added in v0.1.5
type UserClaims struct {
UserID string `json:"user_id"` // 用户ID
Username string `json:"username"` // 用户名
Email string `json:"email,omitempty"` // 邮箱
Roles []string `json:"roles,omitempty"` // 角色列表
Scope string `json:"scope,omitempty"` // 权限范围
}
UserClaims 用户声明结构
type ZipFSConfig ¶ added in v0.1.5
type ZipFSConfig struct {
// 基础配置
ZipPath string // zip文件路径
URLPrefix string // URL路径前缀
SubPaths []string // 子路径列表(可选)
// 安全配置
Password string // zip文件密码(可选)
// 热更新配置
HotReload bool // 是否启用热更新
CheckInterval time.Duration // 检查间隔,默认3秒
// 行为配置
IndexFile string // 首页文件名,默认index.html
StripPrefix bool // 是否移除URL前缀
// 回退配置
FallbackFS http.FileSystem // 回退文件系统
FallbackHandler gin.HandlerFunc // 回退处理器
}
ZipFSConfig zip文件系统配置
func NewZipFSConfig ¶ added in v0.1.5
func NewZipFSConfig(zipPath, urlPrefix string, opts ...func(*ZipFSConfig)) ZipFSConfig
NewZipFSConfig 创建zip文件系统配置
type ZipFSMetrics ¶ added in v0.1.5
type ZipFSMetrics struct {
ReloadCount int64 // 重载次数
LastReload time.Time // 最后重载时间
ErrorCount int64 // 错误次数
RequestCount int64 // 请求次数
}
ZipFSMetrics zip文件系统监控指标
type ZipFile ¶ added in v0.1.5
type ZipFile struct {
// contains filtered or unexported fields
}
ZipFile 单个zip文件管理器
func NewZipFile ¶ added in v0.1.5
func NewZipFile(zipPath, filePath string, config *ZipFileConfig) (*ZipFile, error)
NewZipFile 创建新的zip文件管理器
func (*ZipFile) StartHotReload ¶ added in v0.1.5
func (zf *ZipFile) StartHotReload()
StartHotReload 启动文件热更新监控
type ZipFileConfig ¶ added in v0.1.5
type ZipFileConfig struct {
Password string // zip文件密码(可选)
HotReload bool // 是否启用热更新
CheckInterval time.Duration // 检查间隔
ContentType string // 内容类型
}
ZipFileConfig 单文件配置
type ZipFileOption ¶ added in v0.1.5
type ZipFileOption func(*ZipFileConfig)
ZipFileOption 单文件配置选项
func WithContentType ¶ added in v0.1.5
func WithContentType(contentType string) ZipFileOption
WithContentType 设置内容类型
func WithFileHotReload ¶ added in v0.1.5
func WithFileHotReload(interval time.Duration) ZipFileOption
WithFileHotReload 启用文件热更新
func WithFilePassword ¶ added in v0.1.5
func WithFilePassword(password string) ZipFileOption
WithFilePassword 设置单文件zip密码
type ZipFileSystem ¶ added in v0.1.5
type ZipFileSystem struct {
// contains filtered or unexported fields
}
ZipFileSystem zip文件系统管理器
func NewZipFileSystem ¶ added in v0.1.5
func NewZipFileSystem(config ZipFSConfig) (*ZipFileSystem, error)
NewZipFileSystem 创建新的zip文件系统
func (*ZipFileSystem) GetMetrics ¶ added in v0.1.5
func (zfs *ZipFileSystem) GetMetrics() ZipFSMetrics
GetMetrics 获取监控指标
func (*ZipFileSystem) ServeHTTP ¶ added in v0.1.5
func (zfs *ZipFileSystem) ServeHTTP(c *gin.Context)
ServeHTTP 实现http.Handler接口
func (*ZipFileSystem) StartHotReload ¶ added in v0.1.5
func (zfs *ZipFileSystem) StartHotReload()
StartHotReload 启动热更新监控
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
errors
command
|
|
|
full
command
|
|
|
oauth
command
|
|
|
openapi
command
|
|
|
sse
command
|
|
|
token
command
|
|
|
zipfs
command
|
|
|
pkg
|
|
|
errors
Package errors 提供统一的错误处理机制
|
Package errors 提供统一的错误处理机制 |
|
sse
Package sse 提供基于Server-Sent Events的实时通信功能
|
Package sse 提供基于Server-Sent Events的实时通信功能 |
|
token/pool
@Author daixk 2025-10-28 22:00:20
|
@Author daixk 2025-10-28 22:00:20 |
|
Package types 定义框架中通用的类型和接口,解决循环导入问题
|
Package types 定义框架中通用的类型和接口,解决循环导入问题 |