Documentation
¶
Index ¶
- Variables
- func NewManager(resources []apiPkg.Resource, db orm.Db, ...) (apiPkg.Manager, error)
- type CtxParamResolver
- type DbParamResolver
- type DefaultEngine
- type Engine
- type HandlerParamResolverManager
- type LoggerParamResolver
- type ParamResolverFunc
- type Policy
- type PrincipalParamResolver
- type ResourceDefinition
- type TransformerParamResolver
Constants ¶
This section is empty.
Variables ¶
var ( // ErrResolveParamType indicates failing to resolve handler parameter type. ErrResolveParamType = errors.New("failed to resolve api handler parameter type") // ErrUnmarshalParamsMustPointerStruct indicates unmarshal target must be pointer to struct. ErrUnmarshalParamsMustPointerStruct = errors.New("the parameter of UnmarshalParams function must be a pointer to a struct") // ErrProvidedHandlerNil indicates provided handler is nil. ErrProvidedHandlerNil = errors.New("provided handler cannot be nil") // ErrProvidedHandlerMustFunc indicates provided handler must be a function. ErrProvidedHandlerMustFunc = errors.New("provided handler must be a function") // ErrProvidedHandlerFuncNil indicates provided handler function is nil. ErrProvidedHandlerFuncNil = errors.New("provided handler function cannot be nil") // ErrHandlerFactoryRequireDB indicates handler factory requires db. ErrHandlerFactoryRequireDB = errors.New("handler factory function requires database connection but none provided") // ErrHandlerFactoryMethodRequireDB indicates handler factory method requires db. ErrHandlerFactoryMethodRequireDB = errors.New("handler factory method requires database connection but none provided") // ErrAPIMethodNotFound indicates api action method not found. ErrAPIMethodNotFound = errors.New("api action method not found in resource") // ErrHandlerMethodInvalidReturn indicates handler method invalid return type. ErrHandlerMethodInvalidReturn = errors.New("handler method has invalid return type, must be 'error'") // ErrHandlerMethodTooManyReturns indicates handler method has too many returns. ErrHandlerMethodTooManyReturns = errors.New("handler method has too many return values, must have at most 1 (error) or none") // ErrHandlerFactoryInvalidReturn indicates handler factory invalid return count. ErrHandlerFactoryInvalidReturn = errors.New("handler factory method should return 1 or 2 values") )
var Module = fx.Module( "vef:api", fx.Provide( fx.Annotate( NewHandlerParamResolverManager, fx.ParamTags(`group:"vef:api:param_resolvers"`), ), fx.Private, ), fx.Provide( fx.Annotate( NewManager, fx.ParamTags(`group:"vef:api:resources"`, `optional:"true"`), fx.ResultTags(`name:"vef:api:manager"`), ), fx.Annotate( NewManager, fx.ParamTags(`group:"vef:openapi:resources"`, `optional:"true"`), fx.ResultTags(`name:"vef:openapi:manager"`), ), fx.Annotate( NewDefaultApiPolicy, fx.ResultTags(`name:"vef:api:policy"`), ), fx.Annotate( NewOpenApiPolicy, fx.ResultTags(`name:"vef:openapi:policy"`), ), fx.Annotate( NewEngine, fx.ParamTags( `name:"vef:api:manager"`, `name:"vef:api:policy"`, `optional:"true"`, `optional:"true"`, ), fx.ResultTags(`name:"vef:api:engine"`), ), fx.Annotate( NewEngine, fx.ParamTags( `name:"vef:openapi:manager"`, `name:"vef:openapi:policy"`, `optional:"true"`, `optional:"true"`, ), fx.ResultTags(`name:"vef:openapi:engine"`), ), ), )
Functions ¶
func NewManager ¶
func NewManager(resources []apiPkg.Resource, db orm.Db, paramResolver *HandlerParamResolverManager) (apiPkg.Manager, error)
NewManager creates a new API manager and registers all provided resources.
Types ¶
type CtxParamResolver ¶
type CtxParamResolver struct{}
func (*CtxParamResolver) Type ¶
func (*CtxParamResolver) Type() reflect.Type
type DbParamResolver ¶
type DbParamResolver struct{}
func (*DbParamResolver) Type ¶
func (*DbParamResolver) Type() reflect.Type
type DefaultEngine ¶
type DefaultEngine struct {
// contains filtered or unexported fields
}
func (*DefaultEngine) Connect ¶
func (e *DefaultEngine) Connect(router fiber.Router)
Connect registers the API engine with the given router. It sets up the middleware chain and registers the API endpoint.
type Engine ¶
type Engine interface {
// Connect registers the API engine with the given router.
Connect(router fiber.Router)
}
Engine defines the interface for API engines that can connect to a router. It provides the ability to register API endpoints with a Fiber router.
func NewEngine ¶
func NewEngine( manager api.Manager, policy Policy, checker security.PermissionChecker, resolver security.DataPermissionResolver, db orm.Db, transformer mold.Transformer, ) Engine
NewEngine creates an Engine with the given policy.
type HandlerParamResolverManager ¶
type HandlerParamResolverManager struct {
// contains filtered or unexported fields
}
HandlerParamResolverManager aggregates all handler parameter resolvers. Resolution uses exact type matching. If needed in the future, assignable/interface matching (e.g., Implements/AssignableTo) can be added without changing the public API.
func NewHandlerParamResolverManager ¶
func NewHandlerParamResolverManager(userResolvers []api.HandlerParamResolver) *HandlerParamResolverManager
NewHandlerParamResolverManager builds a composite resolver by merging preset and user-provided resolvers. If the same type is registered multiple times, the last one wins (user-provided overrides preset). This constructor is intended to be used by the DI layer to assemble resolvers from groups.
func (*HandlerParamResolverManager) Resolve ¶
func (m *HandlerParamResolverManager) Resolve(target reflect.Value, paramType reflect.Type) (ParamResolverFunc, error)
Resolve looks up a resolver function for the given parameter type. It does not perform the actual value conversion; callers should invoke the returned function with a request context to obtain the value. Returns (resolver, nil) on success, or (nil, error) when no resolver is found.
type LoggerParamResolver ¶
type LoggerParamResolver struct{}
func (*LoggerParamResolver) Type ¶
func (*LoggerParamResolver) Type() reflect.Type
type ParamResolverFunc ¶
ParamResolverFunc resolves a value from the current request context.
type Policy ¶
type Policy interface {
// Path returns the mount path for this API kind, e.g. "/api" or "/openapi".
Path() string
// BuildAuthenticationMiddleware returns the authentication middleware for this API kind.
BuildAuthenticationMiddleware(manager api.Manager) fiber.Handler
}
Policy defines how a specific API kind should behave. It encapsulates authentication, permission, limiter and path strategy.
func NewDefaultApiPolicy ¶
func NewDefaultApiPolicy(auth security.AuthManager) Policy
func NewOpenApiPolicy ¶
func NewOpenApiPolicy(auth security.AuthManager) Policy
type PrincipalParamResolver ¶
type PrincipalParamResolver struct{}
func (*PrincipalParamResolver) Type ¶
func (*PrincipalParamResolver) Type() reflect.Type
type ResourceDefinition ¶
type ResourceDefinition interface {
// Register registers all API definitions with the given manager.
Register(manager api.Manager)
}
ResourceDefinition represents a collection of API definitions that can be registered with a manager.
type TransformerParamResolver ¶
type TransformerParamResolver struct{}
func (*TransformerParamResolver) Type ¶
func (*TransformerParamResolver) Type() reflect.Type