Documentation
¶
Index ¶
- Constants
- func EqualFold[S byteSeq](b, s S) bool
- func GetMIME(extension string) string
- func GetReqHeader[V GenericType](c *Context, key string, defaultValue ...V) V
- func IsObject(v interface{}) bool
- func StatusMessage(status int) string
- func Stringify(v interface{}) string
- func Trim[S byteSeq](s S, cutset byte) S
- func TrimLeft[S byteSeq](s S, cutset byte) S
- func TrimRight[S byteSeq](s S, cutset byte) S
- func UUID() string
- func UUIDv4() string
- type AttributeName
- type Context
- func (c *Context) Append(field string, values ...string)
- func (c *Context) Apply(ctl interface{}) error
- func (c *Context) AsciiJSON(code int, obj any)
- func (c *Context) ContextString() string
- func (c *Context) Data(code int, contentType string, data []byte)
- func (c *Context) DataFromReader(code int, contentLength int64, contentType string, reader io.Reader, ...)
- func (c *Context) Error(err error) *Error
- func (c *Context) File(filepath string)
- func (c *Context) FileAttachment(filepath, filename string)
- func (c *Context) Get(key string) (value any, exists bool)
- func (c *Context) GetBool(key string) (b bool)
- func (c *Context) GetDuration(key string) (d time.Duration)
- func (c *Context) GetFastContext() *fasthttp.RequestCtx
- func (c *Context) GetFloat64(key string) (f64 float64)
- func (c *Context) GetHeader(key string, defaultValue ...string) string
- func (c *Context) GetInt(key string) (i int)
- func (c *Context) GetInt64(key string) (i64 int64)
- func (c *Context) GetString(key string) (s string)
- func (c *Context) GetStringMap(key string) (sm map[string]any)
- func (c *Context) GetStringMapString(key string) (sms map[string]string)
- func (c *Context) GetStringMapStringSlice(key string) (smss map[string][]string)
- func (c *Context) GetStringSlice(key string) (ss []string)
- func (c *Context) GetTime(key string) (t time.Time)
- func (c *Context) GetUint(key string) (ui uint)
- func (c *Context) GetUint64(key string) (ui64 uint64)
- func (c *Context) HTML(code int, name string, obj any)
- func (c *Context) HTMLPure(code int, content string, obj any)
- func (c *Context) Injector() inject.Injector
- func (c *Context) Invoke(i interface{}) ([]reflect.Value, error)
- func (c *Context) IsFromLocal() bool
- func (c *Context) JSON(code int, obj any)
- func (c *Context) JSONP(data any, callback ...string)
- func (c *Context) Location(path string)
- func (c *Context) Map(i ...interface{}) inject.TypeMapper
- func (c *Context) MapTo(i interface{}, j interface{}) inject.TypeMapper
- func (c *Context) Method() string
- func (c *Context) MustGet(key string) any
- func (c *Context) Param(key string) string
- func (c *Context) Protocol() string
- func (c *Context) Provide(i interface{}) error
- func (c *Context) PureJSON(code int, obj any)
- func (c *Context) Redirect(code int, location string)
- func (c *Context) RemoteIP() string
- func (c *Context) Render(code int, r render.IRender)
- func (c *Context) SaveUploadFile(file *multipart.FileHeader, dst string) error
- func (c *Context) SendStatus(status int)
- func (c *Context) SendStream(stream io.Reader, size ...int) error
- func (c *Context) Set(key string, value any)
- func (c *Context) SetHeader(key, val string)
- func (c *Context) Status(code int)
- func (c *Context) Stream(step func(w *bufio.Writer))
- func (c *Context) String(code int, format string, values ...any)
- func (c *Context) Type(extension string, charset ...string)
- func (c *Context) Vary(fields ...string)
- func (c *Context) Write(p []byte) (int, error)
- func (c *Context) WriteString(s string)
- func (c *Context) Writef(f string, a ...any) (int, error)
- func (c *Context) XHR() bool
- func (c *Context) XML(code int, obj any)
- type Entry
- func (entry *Entry) Debug(args ...interface{})
- func (entry *Entry) Error(args ...interface{})
- func (entry *Entry) Fatal(args ...interface{})
- func (entry *Entry) Info(args ...interface{})
- func (entry *Entry) Panic(args ...interface{})
- func (entry *Entry) Trace(args ...interface{})
- func (entry *Entry) Warn(args ...interface{})
- type Error
- type ErrorType
- type Formatter
- type GenericType
- type GenericTypeFloat
- type GenericTypeInteger
- type GenericTypeIntegerSigned
- type GenericTypeIntegerUnsigned
- type H
- type HandlerFunc
- type HookHandler
- type IConfig
- type IInitOnce
- type IMiddleware
- type IMiddlewareBase
- type IMiddlewareCtl
- type IMiddlewareGlobal
- type IMiddlewareMethod
- type IReg
- type JO
- type LogFileHook
- type LoggerOption
- type Middleware
- type MiddlewareContainer
- func (m *MiddlewareContainer) GetByAttribute(slot string, attribute string) (IMiddleware, bool)
- func (m *MiddlewareContainer) GetByAttributeCtl(attribute string) (IMiddlewareCtl, bool)
- func (m *MiddlewareContainer) GetByAttributeMethod(attribute string) (IMiddlewareMethod, bool)
- func (m *MiddlewareContainer) GetGlobal(f func(middleware IMiddlewareGlobal) bool) bool
- func (m *MiddlewareContainer) Reg(middleware IMiddleware)
- func (m *MiddlewareContainer) VisitAll(slot string, f func(middleware IMiddleware) bool) bool
- type MiddlewareContext
- type MiddlewareCtl
- type MiddlewareGlobal
- type MiddlewareMethod
- type PathMap
- type RootFields
- type RouteItem
- type Server
- type ServerOption
- type SlotType
- type WriterMap
Constants ¶
const (
AfterListen = "afterListen"
)
const MIMEOctetStream = "application/octet-stream"
const Version = "v1.0.0@beta"
Variables ¶
This section is empty.
Functions ¶
func EqualFold ¶
func EqualFold[S byteSeq](b, s S) bool
EqualFold tests ascii strings or bytes for equality case-insensitively
func GetReqHeader ¶
func GetReqHeader[V GenericType](c *Context, key string, defaultValue ...V) V
GetReqHeader returns the HTTP request header specified by filed. This function is generic and can handle differnet headers type values.
func StatusMessage ¶
StatusMessage returns the correct message for the provided HTTP statuscode
func TrimLeft ¶
func TrimLeft[S byteSeq](s S, cutset byte) S
TrimLeft is the equivalent of strings/bytes.TrimLeft
Types ¶
type AttributeName ¶
type AttributeName = string
type Context ¶
type Context struct {
Keys map[string]any
Errors errorMsgs
ErrHandler func(*Context, error)
// contains filtered or unexported fields
}
func (*Context) Append ¶
Append the specified value to the HTTP response header field. If the header is not already set, it creates the header with the specified value.
func (*Context) ContextString ¶
ContextString returns unique string representation of the ctx.
The returned value may be useful for logging.
func (*Context) DataFromReader ¶
func (*Context) FileAttachment ¶
func (*Context) GetFastContext ¶
func (c *Context) GetFastContext() *fasthttp.RequestCtx
func (*Context) GetFloat64 ¶
func (*Context) GetHeader ¶
GetHeader returns the HTTP request header specified by field. Field names are case-insensitive Returned value is only valid within the handler. Do not store any references. Make copies or use the Immutable setting instead.
func (*Context) GetStringMapString ¶
func (*Context) GetStringMapStringSlice ¶
func (*Context) GetStringSlice ¶
func (*Context) IsFromLocal ¶
IsFromLocal will return true if request came from local.
func (*Context) Location ¶
Location sets the response Location HTTP header to the specified path parameter.
func (*Context) Map ¶
func (c *Context) Map(i ...interface{}) inject.TypeMapper
func (*Context) MapTo ¶
func (c *Context) MapTo(i interface{}, j interface{}) inject.TypeMapper
func (*Context) SaveUploadFile ¶ added in v0.1.1
func (c *Context) SaveUploadFile(file *multipart.FileHeader, dst string) error
func (*Context) SendStatus ¶
SendStatus sets the HTTP status code and if the response body is empty, it sets the correct status message in the body.
func (*Context) SendStream ¶
SendStream sets response body stream and optional body size.
func (*Context) SetHeader ¶
SetHeader sets the response's HTTP header field to the specified key, value.
func (*Context) Stream ¶
Stream sends a streaming response and returns a boolean indicates "Is client disconnected in middle of stream"
func (*Context) Type ¶
Type sets the Content-Type HTTP header to the MIME type specified by the file extension.
func (*Context) Vary ¶
Vary adds the given header field to the Vary response header. This will append the header, if not already listed, otherwise leaves it listed in the current location.
func (*Context) WriteString ¶
WriteString appends s to response body.
type ErrorType ¶
type ErrorType uint64
const ( // ErrorTypeBind is used when Context.Bind() fails. ErrorTypeBind ErrorType = 1 << 63 // ErrorTypeRender is used when Context.Render() fails. ErrorTypeRender ErrorType = 1 << 62 // ErrorTypePrivate indicates a private error. ErrorTypePrivate ErrorType = 1 << 0 // ErrorTypePublic indicates a public error. ErrorTypePublic ErrorType = 1 << 1 // ErrorTypeAny indicates any other error. ErrorTypeAny ErrorType = 1<<64 - 1 // ErrorTypeNu indicates any other error. ErrorTypeNu = 2 )
type GenericType ¶
type GenericType interface {
GenericTypeInteger | GenericTypeFloat | bool | string | []byte
}
type GenericTypeFloat ¶
type GenericTypeInteger ¶
type GenericTypeInteger interface {
GenericTypeIntegerSigned | GenericTypeIntegerUnsigned
}
type H ¶
func (H) MarshalXML ¶
type HandlerFunc ¶
type HandlerFunc = func(*Context)
type HookHandler ¶
type IMiddleware ¶
type IMiddleware interface {
IMiddlewareBase
IConfig
IInitOnce
IReg
}
IMiddleware interface of middleware
type IMiddlewareBase ¶ added in v0.3.0
type IMiddlewareBase interface {
// Name returns middleware's name
Name() string
// Attribute returns middleware's Attribute just like Websocket so that you can use it like // @Websocket
Attribute() AttributeName
// GetSlot returns slot type
GetSlot() SlotType
}
type IMiddlewareCtl ¶
type IMiddlewareCtl interface {
IMiddlewareMethod
Router(ctx *MiddlewareContext) []*RouteItem
}
type IMiddlewareGlobal ¶
type IMiddlewareGlobal interface {
IMiddlewareCtl
}
type IMiddlewareMethod ¶
type IMiddlewareMethod interface {
IMiddleware
Execute(ctx *MiddlewareContext) HandlerFunc
}
type LogFileHook ¶
type LogFileHook struct {
// contains filtered or unexported fields
}
func NewFileHook ¶
func NewFileHook(output interface{}, formatter logrus.Formatter) *LogFileHook
func (*LogFileHook) Levels ¶
func (hook *LogFileHook) Levels() []logrus.Level
func (*LogFileHook) SetDefaultPath ¶
func (hook *LogFileHook) SetDefaultPath(defaultPath string)
func (*LogFileHook) SetDefaultWriter ¶
func (hook *LogFileHook) SetDefaultWriter(defaultWriter io.Writer)
func (*LogFileHook) SetFormatter ¶
func (hook *LogFileHook) SetFormatter(formatter logrus.Formatter)
type LoggerOption ¶ added in v0.2.4
type LoggerOption struct {
LoggerLevel int `yaml:"loggerLevel" default:"4"` //0-6 0: Panic 6: Trace
SeparateLevelFile bool `yaml:"separateLevelFile" default:"false"`
LogDir string `yaml:"logDir" default:"log"`
RotateFile bool `yaml:"rotate" default:"true"`
MaxSize int `yaml:"maxSize" default:"5"`
MaxAge int `yaml:"maxAge" default:"28"`
MaxBackups int `yaml:"maxBackups" default:"3"`
Compress bool `yaml:"compress" default:"false"`
LocalTime bool `yaml:"localTime" default:"true"`
}
type Middleware ¶
type Middleware struct {
// contains filtered or unexported fields
}
func NewMiddleware ¶
func NewMiddleware(name string, slot string, attr string) *Middleware
func (*Middleware) Attribute ¶
func (m *Middleware) Attribute() AttributeName
func (*Middleware) DoInitOnce ¶ added in v0.3.0
func (m *Middleware) DoInitOnce()
func (*Middleware) GetSlot ¶
func (m *Middleware) GetSlot() SlotType
func (*Middleware) LoadConfig ¶ added in v0.3.0
func (m *Middleware) LoadConfig(key string, config any)
func (*Middleware) Name ¶
func (m *Middleware) Name() string
type MiddlewareContainer ¶
type MiddlewareContainer struct {
// contains filtered or unexported fields
}
MiddlewareContainer stores middlewares global middlewares will be stored with its Name as key
func NewMiddlewareContainer ¶
func NewMiddlewareContainer() *MiddlewareContainer
func (*MiddlewareContainer) GetByAttribute ¶
func (m *MiddlewareContainer) GetByAttribute(slot string, attribute string) (IMiddleware, bool)
GetByAttribute returns middleware with specified slot and attr.
func (*MiddlewareContainer) GetByAttributeCtl ¶
func (m *MiddlewareContainer) GetByAttributeCtl(attribute string) (IMiddlewareCtl, bool)
GetByAttributeCtl find controller middleware(IMiddlewareCtl) with attribute name
func (*MiddlewareContainer) GetByAttributeMethod ¶
func (m *MiddlewareContainer) GetByAttributeMethod(attribute string) (IMiddlewareMethod, bool)
GetByAttributeMethod find method middleware(IMiddlewareMethod) with attribute name
func (*MiddlewareContainer) GetGlobal ¶
func (m *MiddlewareContainer) GetGlobal(f func(middleware IMiddlewareGlobal) bool) bool
GetGlobal iterate global middlewares stop at `f` returns true
func (*MiddlewareContainer) Reg ¶
func (m *MiddlewareContainer) Reg(middleware IMiddleware)
Reg will store middleware to specified map according to its slot
func (*MiddlewareContainer) VisitAll ¶
func (m *MiddlewareContainer) VisitAll(slot string, f func(middleware IMiddleware) bool) bool
VisitAll visit all middlewares with the specified slot if f returns true, the loop will terminate
type MiddlewareContext ¶ added in v0.3.0
type MiddlewareContext struct {
ControllerName string
MethodName string
Location SlotType
Param map[SlotType]string
RValue map[SlotType]reflect.Value
ParamValues url.Values
Ignored bool
Next HandlerFunc
}
func (*MiddlewareContext) DelParam ¶ added in v0.3.0
func (m *MiddlewareContext) DelParam(key string)
func (*MiddlewareContext) GetParam ¶ added in v0.3.0
func (m *MiddlewareContext) GetParam(key string) string
func (*MiddlewareContext) GetRValue ¶ added in v0.3.0
func (m *MiddlewareContext) GetRValue() reflect.Value
func (*MiddlewareContext) SetRValue ¶ added in v0.3.0
func (m *MiddlewareContext) SetRValue(v reflect.Value)
func (*MiddlewareContext) VisitParams ¶ added in v0.3.0
func (m *MiddlewareContext) VisitParams(f func(key string, value []string))
type MiddlewareCtl ¶
type MiddlewareCtl struct {
*MiddlewareMethod
}
func NewMiddlewareCtl ¶
func NewMiddlewareCtl(name string, attr string) *MiddlewareCtl
func NewMiddlewareCtlForGlobal ¶ added in v0.3.0
func NewMiddlewareCtlForGlobal(name string) *MiddlewareCtl
func (*MiddlewareCtl) Execute ¶ added in v0.3.0
func (m *MiddlewareCtl) Execute(ctx *MiddlewareContext) HandlerFunc
func (*MiddlewareCtl) Router ¶ added in v0.3.0
func (m *MiddlewareCtl) Router(ctx *MiddlewareContext) []*RouteItem
type MiddlewareGlobal ¶
type MiddlewareGlobal struct {
*MiddlewareCtl
}
func NewMiddlewareGlobal ¶
func NewMiddlewareGlobal(name string) *MiddlewareGlobal
type MiddlewareMethod ¶
type MiddlewareMethod struct {
*Middleware
}
func NewMiddlewareMethod ¶
func NewMiddlewareMethod(name string, attr string) *MiddlewareMethod
func NewMiddlewareMethodForCtl ¶ added in v0.2.1
func NewMiddlewareMethodForCtl(name string, attr string) *MiddlewareMethod
func NewMiddlewareMethodForGlobal ¶ added in v0.3.0
func NewMiddlewareMethodForGlobal(name string) *MiddlewareMethod
type RootFields ¶
type RouteItem ¶
type RouteItem struct {
Method string // HTTP METHOD
Path string // route path
IsHide bool // if set true, this route will not show in route table
H HandlerFunc // handler for this route
Middleware IMiddlewareCtl // just refer to middleware itself
}
type Server ¶
func (*Server) RegisterHooks ¶
func (s *Server) RegisterHooks(handler HookHandler)
func (*Server) RegisterRoute ¶
func (*Server) RegisterRoutes ¶
func (*Server) Use ¶
func (s *Server) Use(middleware IMiddleware)
Use register middleware to server. you can only use the @'Attribute' after register a middleware
type ServerOption ¶ added in v0.2.4
type ServerOption struct {
IntranetIP string
Dev bool `yaml:"dev" default:"true"`
Debug bool `yaml:"debug" default:"true"`
NoColor bool `yaml:"nocolor" default:"false"`
BasePath string `yaml:"basePath" default:"/"`
Listen string `yaml:"listen" default:"127.0.0.1"` //监听地址
Title string `yaml:"title" default:"fw api"`
Name string `yaml:"name" default:"fw"` //server_token
ShowRequestTimeHeader bool `yaml:"showRequestTimeHeader,omitempty" default:"true"`
RequestTimeHeader string `yaml:"requestTimeHeader,omitempty" default:"Request-Time"`
Port int `yaml:"port" default:"2024"`
AstFile string `yaml:"astFile" default:"gen.json"` //ast json file generated by github.com/linxlib/astp. default is gen.json
Logger LoggerOption `yaml:"logger"`
}