dotweb package - github.com/devfeel/dotweb - Go Packages
- Constants
- Variables
- func DefaultAutoOPTIONSHandler(ctx Context) error
- func DefaultMethodNotAllowedHandler(ctx Context)
- func DefaultNotFoundHandler(ctx Context)
- func DefaultTimeoutHookHandler(ctx Context)
- func DefaultUniqueIDGenerater() string
- func HTTPNotFound(ctx Context)
- func NewRouter(server *HttpServer) *router
- type BaseMiddleware
- type BaseMiddlware
- type Binder
- type Context
- type ContextCreater
- type DotWeb
- func (app *DotWeb) Cache() cache.Cache
- func (app *DotWeb) Close() error
- func (app *DotWeb) DefaultHTTPErrorHandler(ctx Context, err error)
- func (app *DotWeb) ExcludeUse(m Middleware, routers ...string)
- func (app *DotWeb) GetMiddlewareFunc(name string) (MiddlewareFunc, bool)
- func (app *DotWeb) GlobalUniqueID() string
- func (app *DotWeb) IncludeDotwebGroup()
- func (app *DotWeb) IsDevelopmentMode() bool
- func (app *DotWeb) ListenAndServe(addr string) error
- func (app *DotWeb) Logger() logger.AppLog
- func (app *DotWeb) MustStart()
- func (app *DotWeb) ReSetConfig(config *config.Config)
- func (app *DotWeb) RegisterMiddlewareFunc(name string, middleFunc MiddlewareFunc)
- func (app *DotWeb) RunMode() string
- func (app *DotWeb) SetCache(ca cache.Cache)
- func (app *DotWeb) SetConfig(config *config.Config)
- func (app *DotWeb) SetDevelopmentMode()
- func (app *DotWeb) SetEnabledLog(enabledLog bool)
- func (app *DotWeb) SetExceptionHandle(handler ExceptionHandle)
- func (app *DotWeb) SetLogPath(path string)
- func (app *DotWeb) SetLogger(log logger.AppLog)
- func (app *DotWeb) SetMethodNotAllowedHandle(handler StandardHandle)
- func (app *DotWeb) SetMock(mock Mock)
- func (app *DotWeb) SetNotFoundHandle(handler StandardHandle)
- func (app *DotWeb) SetPProfConfig(enabledPProf bool, httpport int)
- func (app *DotWeb) SetProductionMode()
- func (app *DotWeb) Shutdown(ctx context.Context) error
- func (app *DotWeb) Start() error
- func (app *DotWeb) StartServer(httpPort int) error
- func (app *DotWeb) StateInfo() *core.ServerStateInfo
- func (app *DotWeb) Use(m ...Middleware)
- func (app *DotWeb) UsePlugin(plugins ...Plugin)
- func (app *DotWeb) UseRequestLog()
- func (app *DotWeb) UseTimeoutHook(handler StandardHandle, timeout time.Duration)
- type ExceptionHandle
- type Group
- type HijackConn
- type HttpContext
- func (ctx *HttpContext) AddView(names ...string) []string
- func (ctx *HttpContext) AppItems() core.ConcurrenceMap
- func (ctx *HttpContext) Attachment(file, name string) (err error)
- func (ctx *HttpContext) Bind(i interface{}) error
- func (ctx *HttpContext) BindJsonBody(i interface{}) error
- func (ctx *HttpContext) Cache() cache.Cache
- func (ctx *HttpContext) ConfigSet() core.ReadonlyMap
- func (ctx *HttpContext) Context() context.Context
- func (ctx *HttpContext) DestorySession() error
- func (ctx *HttpContext) End()
- func (ctx *HttpContext) File(file string) (err error)
- func (ctx *HttpContext) FormValue(key string) string
- func (ctx *HttpContext) GetRouterName(key string) string
- func (ctx *HttpContext) Handler() HttpHandle
- func (ctx *HttpContext) Hijack() (*HijackConn, error)
- func (ctx *HttpContext) HijackConn() *HijackConn
- func (ctx *HttpContext) HttpServer() *HttpServer
- func (ctx *HttpContext) Inline(file, name string) (err error)
- func (ctx *HttpContext) IsEnd() bool
- func (ctx *HttpContext) IsHijack() bool
- func (ctx *HttpContext) IsWebSocket() bool
- func (ctx *HttpContext) Items() core.ConcurrenceMap
- func (ctx *HttpContext) PostFormValue(key string) string
- func (ctx *HttpContext) QueryInt(key string) int
- func (ctx *HttpContext) QueryInt64(key string) int64
- func (ctx *HttpContext) QueryString(key string) string
- func (ctx *HttpContext) ReadCookie(name string) (*http.Cookie, error)
- func (ctx *HttpContext) ReadCookieValue(name string) (string, error)
- func (ctx *HttpContext) Redirect(code int, targetUrl string) error
- func (ctx *HttpContext) RemoteIP() string
- func (ctx *HttpContext) RemoveCookie(name string)
- func (ctx *HttpContext) Request() *Request
- func (ctx *HttpContext) Response() *Response
- func (ctx *HttpContext) RouterNode() RouterNode
- func (ctx *HttpContext) RouterParams() Params
- func (ctx *HttpContext) Session() (state *session.SessionState)
- func (ctx *HttpContext) SessionID() string
- func (ctx *HttpContext) SetCookie(cookie *http.Cookie)
- func (ctx *HttpContext) SetCookieValue(name, value string, maxAge int)
- func (ctx *HttpContext) SetTimeoutContext(timeout time.Duration) context.Context
- func (ctx *HttpContext) Tools() *Tools
- func (ctx *HttpContext) Validate(i interface{}) error
- func (ctx *HttpContext) View(name string) error
- func (ctx *HttpContext) ViewC(code int, name string) error
- func (ctx *HttpContext) ViewData() core.ConcurrenceMap
- func (ctx *HttpContext) WebSocket() *WebSocket
- func (ctx *HttpContext) WithContext(runCtx context.Context)
- func (ctx *HttpContext) Write(code int, content []byte) (int, error)
- func (ctx *HttpContext) WriteBlob(contentType string, b []byte) error
- func (ctx *HttpContext) WriteBlobC(code int, contentType string, b []byte) error
- func (ctx *HttpContext) WriteHtml(contents ...interface{}) error
- func (ctx *HttpContext) WriteHtmlC(code int, contents ...interface{}) error
- func (ctx *HttpContext) WriteJson(i interface{}) error
- func (ctx *HttpContext) WriteJsonBlob(b []byte) error
- func (ctx *HttpContext) WriteJsonBlobC(code int, b []byte) error
- func (ctx *HttpContext) WriteJsonC(code int, i interface{}) error
- func (ctx *HttpContext) WriteJsonp(callback string, i interface{}) error
- func (ctx *HttpContext) WriteJsonpBlob(callback string, b []byte) error
- func (ctx *HttpContext) WriteString(contents ...interface{}) error
- func (ctx *HttpContext) WriteStringC(code int, contents ...interface{}) error
- type HttpHandle
- type HttpModule
- type HttpServer
- func (server *HttpServer) Any(path string, handle HttpHandle)
- func (server *HttpServer) Binder() Binder
- func (server *HttpServer) DELETE(path string, handle HttpHandle) RouterNode
- func (server *HttpServer) GET(path string, handle HttpHandle) RouterNode
- func (server *HttpServer) GetSessionManager() *session.SessionManager
- func (server *HttpServer) Group(prefix string) Group
- func (server *HttpServer) HEAD(path string, handle HttpHandle) RouterNode
- func (server *HttpServer) HiJack(path string, handle HttpHandle)
- func (server *HttpServer) IndexPage() string
- func (server *HttpServer) InitSessionManager()
- func (server *HttpServer) IsOffline() bool
- func (server *HttpServer) ListenAndServe(addr string) error
- func (server *HttpServer) ListenAndServeTLS(addr string, certFile, keyFile string) error
- func (server *HttpServer) Logger() logger.AppLog
- func (server *HttpServer) OPTIONS(path string, handle HttpHandle) RouterNode
- func (server *HttpServer) PATCH(path string, handle HttpHandle) RouterNode
- func (server *HttpServer) POST(path string, handle HttpHandle) RouterNode
- func (server *HttpServer) PUT(path string, handle HttpHandle) RouterNode
- func (server *HttpServer) RegisterHandlerFunc(routeMethod string, path string, handler http.HandlerFunc) RouterNode
- func (server *HttpServer) RegisterModule(module *HttpModule)
- func (server *HttpServer) RegisterRoute(routeMethod string, path string, handle HttpHandle) RouterNode
- func (server *HttpServer) RegisterServerFile(routeMethod string, path string, fileRoot string, excludeExtension []string) RouterNode
- func (server *HttpServer) Renderer() Renderer
- func (server *HttpServer) Router() Router
- func (server *HttpServer) ServeHTTP(w http.ResponseWriter, req *http.Request)
- func (server *HttpServer) ServerConfig() *config.ServerNode
- func (server *HttpServer) ServerFile(path string, fileRoot string) RouterNode
- func (server *HttpServer) SessionConfig() *config.SessionNode
- func (server *HttpServer) SetBinder(binder Binder)
- func (server *HttpServer) SetContextCreater(creater ContextCreater)
- func (server *HttpServer) SetEnabledAutoHEAD(isEnabled bool)
- func (server *HttpServer) SetEnabledAutoOPTIONS(isEnabled bool)
- func (server *HttpServer) SetEnabledBindUseJsonTag(isEnabled bool)
- func (server *HttpServer) SetEnabledDetailRequestData(isEnabled bool)
- func (server *HttpServer) SetEnabledGzip(isEnabled bool)
- func (server *HttpServer) SetEnabledIgnoreFavicon(isEnabled bool)
- func (server *HttpServer) SetEnabledListDir(isEnabled bool)
- func (server *HttpServer) SetEnabledRequestID(isEnabled bool)
- func (server *HttpServer) SetEnabledSession(isEnabled bool)
- func (server *HttpServer) SetEnabledStaticFileMiddleware(isEnabled bool)
- func (server *HttpServer) SetEnabledTLS(isEnabled bool, certFile, keyFile string)
- func (server *HttpServer) SetIdleTimeout(idleTimeout int64)
- func (server *HttpServer) SetIndexPage(indexPage string)
- func (server *HttpServer) SetMaxBodySize(maxBodySize int64)
- func (server *HttpServer) SetOffline(offline bool, offlineText string, offlineUrl string)
- func (server *HttpServer) SetReadHeaderTimeout(readHeaderTimeout int64)
- func (server *HttpServer) SetReadTimeout(readTimeout int64)
- func (server *HttpServer) SetRenderer(r Renderer)
- func (server *HttpServer) SetSessionConfig(storeConfig *session.StoreConfig)
- func (server *HttpServer) SetVirtualPath(path string)
- func (server *HttpServer) SetWriteTimeout(writeTimeout int64)
- func (server *HttpServer) StateInfo() *core.ServerStateInfo
- func (server *HttpServer) VirtualPath() string
- func (server *HttpServer) WebSocket(path string, handle HttpHandle)
- type IdGenerate
- type LogJson
- type Middleware
- type MiddlewareFunc
- type Mock
- type MockHandle
- type Node
- type NotifyPlugin
- type Param
- type Params
- type Plugin
- type Renderer
- type Request
- func (req *Request) ContentType() string
- func (req *Request) ExistsQueryKey(key string) bool
- func (req *Request) FormFile(key string) (*UploadFile, error)
- func (req *Request) FormFiles() (map[string]*UploadFile, error)
- func (req *Request) FormValues() map[string][]string
- func (req *Request) FullRemoteIP() string
- func (req *Request) IsAJAX() bool
- func (req *Request) Path() string
- func (req *Request) PostBody() []byte
- func (req *Request) PostString(key string) string
- func (req *Request) PostValues() map[string][]string
- func (req *Request) QueryHeader(key string) string
- func (req *Request) QueryString(key string) string
- func (req *Request) QueryStrings() url.Values
- func (req *Request) RawQuery() string
- func (req *Request) RealIP() string
- func (req *Request) RemoteIP() string
- func (req *Request) RequestID() string
- func (req *Request) Url() string
- type RequestLogMiddleware
- type Response
- func (r *Response) Body() []byte
- func (r *Response) BodyString() string
- func (r *Response) End()
- func (r *Response) Flush()
- func (r *Response) Header() http.Header
- func (r *Response) Hijack() (net.Conn, *bufio.ReadWriter, error)
- func (r *Response) HttpCode() int
- func (r *Response) Push(target string, opts *http.PushOptions) error
- func (r *Response) QueryHeader(key string) string
- func (r *Response) Redirect(code int, targetUrl string) error
- func (r *Response) SetContentType(contenttype string)
- func (r *Response) SetHeader(key, val string)
- func (r *Response) SetStatusCode(code int) error
- func (r *Response) SetWriter(w http.ResponseWriter) *Response
- func (r *Response) Write(code int, b []byte) (n int, err error)
- func (r *Response) WriteHeader(code int) error
- func (r *Response) Writer() http.ResponseWriter
- type Router
- type RouterHandle
- type RouterNode
- type StandardHandle
- type StandardMock
- func (m *StandardMock) CheckNeedMock(ctx Context) bool
- func (m *StandardMock) Do(ctx Context)
- func (m *StandardMock) Register(route string, handler MockHandle)
- func (m *StandardMock) RegisterJSON(route string, resData interface{})
- func (m *StandardMock) RegisterString(route string, resData interface{})
- type TimeoutHookMiddleware
- type Tools
- type UploadFile
- type Validator
- type ValueNode
- type WebSocket
const ( LogTarget_Default = "dotweb_default" LogTarget_HttpRequest = "dotweb_request" LogTarget_HttpServer = "dotweb_server" LogTarget_RequestTimeout = "dotweb_req_timeout" LogLevel_Debug = "debug" LogLevel_Info = "info" LogLevel_Warn = "warn" LogLevel_Error = "error" )
Log define
const ( CharsetUTF8 = "charset=utf-8" DefaultServerName = "dotweb" )
Http define
const ( Windows = "windows" Linux = "linux" )
const ( MIMEApplicationJSON = "application/json" MIMEApplicationJSONCharsetUTF8 = MIMEApplicationJSON + "; " + CharsetUTF8 MIMEApplicationJavaScript = "application/javascript" MIMEApplicationJavaScriptCharsetUTF8 = MIMEApplicationJavaScript + "; " + CharsetUTF8 MIMEApplicationXML = "application/xml" MIMEApplicationXMLCharsetUTF8 = MIMEApplicationXML + "; " + CharsetUTF8 MIMEApplicationForm = "application/x-www-form-urlencoded" MIMEApplicationProtobuf = "application/protobuf" MIMEApplicationMsgpack = "application/msgpack" MIMETextHTML = "text/html" MIMETextHTMLCharsetUTF8 = MIMETextHTML + "; " + CharsetUTF8 MIMETextPlain = "text/plain" MIMETextPlainCharsetUTF8 = MIMETextPlain + "; " + CharsetUTF8 MIMEMultipartForm = "multipart/form-data" MIMEOctetStream = "application/octet-stream" )
MIME types
const ( HeaderContentDisposition = "Content-Disposition" HeaderContentEncoding = "Content-Encoding" HeaderContentLength = "Content-Length" HeaderContentType = "Content-Type" HeaderXContentTypeOptions = "X-Content-Type-Options" HeaderContentSecurityPolicy = "Content-Security-Policy" )
Headers
const ( ItemKeyHandleStartTime = "dotweb.HttpContext.StartTime" ItemKeyHandleDuration = "dotweb.HttpContext.HandleDuration" )
const ( DefaultHTTPPort = 8080 DefaultLogPath = "" RunMode_Development = "development" RunMode_Production = "production" StartMode_New = "New" StartMode_Classic = "Classic" )
const ( RouteMethod_Any = "ANY" RouteMethod_GET = "GET" RouteMethod_HEAD = "HEAD" RouteMethod_OPTIONS = "OPTIONS" RouteMethod_POST = "POST" RouteMethod_PUT = "PUT" RouteMethod_PATCH = "PATCH" RouteMethod_DELETE = "DELETE" RouteMethod_HiJack = "HIJACK" RouteMethod_WebSocket = "WEBSOCKET" )
const ( DefaultGzipLevel = 9 DefaultIndexPage = "index.html" )
Global define
func DefaultAutoOPTIONSHandler ¶
DefaultAutoOPTIONSHandler default handler for options request if set HttpServer.EnabledAutoOPTIONS, auto bind this handler Sets CORS headers to support cross-origin preflight requests (Issue #250)
func DefaultUniqueIDGenerater() string
DefaultUniqueIDGenerater default generater used to create Unique Id
func HTTPNotFound(ctx Context)
HTTPNotFound simple notfound function for Context
func NewRouter(server *HttpServer) *router
New returns a new initialized Router. Path auto-correction, including trailing slashes, is enabled by default.
type BaseMiddleware struct {
}
BaseMiddleware is the base struct, user defined middleware should extend this
func (bm *BaseMiddleware) Exclude(routers ...string)
Exclude Exclude this middleware with router
ExistsExcludeRouter check is exists router in exclude map
func (bm *BaseMiddleware) HasExclude() bool
HasExclude check has set exclude router
func (bm *BaseMiddleware) SetNext(m Middleware)
type BaseMiddlware struct {
BaseMiddleware
}
BaseMiddlware is a shortcut for BaseMiddleware Deprecated: 由于该struct命名有误,将在2.0版本弃用,请大家尽快修改自己的middleware
Binder is the interface that wraps the Bind method.
type Context interface {
Context() context.Context
SetTimeoutContext(timeout time.Duration) context.Context
WithContext(runCtx context.Context)
HttpServer() *HttpServer
Response() *Response
Request() *Request
WebSocket() *WebSocket
HijackConn() *HijackConn
RouterNode() RouterNode
RouterParams() Params
Handler() HttpHandle
Tools() *Tools
AppItems() core.ConcurrenceMap
Cache() cache.Cache
Items() core.ConcurrenceMap
ConfigSet() core.ReadonlyMap
ViewData() core.ConcurrenceMap
SessionID() string
Session() (state *session.SessionState)
DestorySession() error
Hijack() (*HijackConn, error)
IsHijack() bool
IsWebSocket() bool
End()
IsEnd() bool
Redirect(code int, targetUrl string) error
QueryString(key string) string
QueryInt(key string) int
QueryInt64(key string) int64
FormValue(key string) string
PostFormValue(key string) string
File(file string) (err error)
Attachment(file string, name string) error
Inline(file string, name string) error
Bind(i interface{}) error
BindJsonBody(i interface{}) error
Validate(i interface{}) error
GetRouterName(key string) string
RemoteIP() string
SetCookieValue(name, value string, maxAge int)
SetCookie(cookie *http.Cookie)
RemoveCookie(name string)
ReadCookieValue(name string) (string, error)
ReadCookie(name string) (*http.Cookie, error)
AddView(name ...string) []string
View(name string) error
ViewC(code int, name string) error
Write(code int, content []byte) (int, error)
WriteString(contents ...interface{}) error
WriteStringC(code int, contents ...interface{}) error
WriteHtml(contents ...interface{}) error
WriteHtmlC(code int, contents ...interface{}) error
WriteBlob(contentType string, b []byte) error
WriteBlobC(code int, contentType string, b []byte) error
WriteJson(i interface{}) error
WriteJsonC(code int, i interface{}) error
WriteJsonBlob(b []byte) error
WriteJsonBlobC(code int, b []byte) error
WriteJsonp(callback string, i interface{}) error
WriteJsonpBlob(callback string, b []byte) error
}
type ContextCreater func() Context
Classic create and return DotApp instance\ if set logPath = "", it will use bin-root/logs for log-root 1.SetEnabledLog(true) 2.use RequestLog Middleware 3.print logo
ClassicWithConf create and return DotApp instance must set config info
New create and return DotApp instance default run mode is RunMode_Production
Cache return cache interface
Close immediately stops the server. It internally calls `http.Server#Close()`.
func (app *DotWeb) ExcludeUse(m Middleware, routers ...string)
ExcludeUse registers a middleware exclude routers like exclude /index or /query/:id
GetMiddlewareFunc get middleware with given name
GlobalUniqueID return app's GlobalUniqueID it will be Initializationed when StartServer
func (app *DotWeb) IncludeDotwebGroup()
IncludeDotwebGroup init inner routers which start with /dotweb/
IsDevelopmentMode check current run mode is development mode
func (*DotWeb) ListenAndServe ¶
ListenAndServe start server with addr not support pprof server auto start
Logger return app's logger
func (app *DotWeb) MustStart()
MustStart start app server with set config If an exception occurs, will be panic it if no set Server.Port, will be use DefaultHttpPort
ReSetConfig reset config for app only apply when app is running Port can not be modify if EnabledPProf, EnabledPProf flag and PProfPort can not be modify
func (app *DotWeb) RegisterMiddlewareFunc(name string, middleFunc MiddlewareFunc)
RegisterMiddlewareFunc register middleware with given name & middleware
RunMode current app run mode, if not set, default set RunMode_Development
SetCache set cache interface
SetConfig set config for app
func (app *DotWeb) SetDevelopmentMode()
SetDevelopmentMode set run mode on development mode 1.SetEnabledLog(true) 2.SetEnabledConsole(true)
func (*DotWeb) SetExceptionHandle ¶
func (app *DotWeb) SetExceptionHandle(handler ExceptionHandle)
SetExceptionHandle set custom error handler
SetLogger set user logger, the logger must implement logger.AppLog interface
func (*DotWeb) SetMethodNotAllowedHandle ¶
func (app *DotWeb) SetMethodNotAllowedHandle(handler StandardHandle)
SetMethodNotAllowedHandle set custom 405 handler
func (*DotWeb) SetNotFoundHandle ¶
func (app *DotWeb) SetNotFoundHandle(handler StandardHandle)
SetNotFoundHandle set custom 404 handler
SetPProfConfig set pprofserver config, default is disable and don't use same port with StartServer
func (app *DotWeb) SetProductionMode()
SetProductionMode set run mode on production mode
Shutdown stops server gracefully. It internally calls `http.Server#Shutdown()`.
Start start app server with set config If an exception occurs, will be return it if no set Server.Port, will be use DefaultHttpPort
StartServer start server with http port if config the pprof, will be start pprof server
StateInfo return app's ServerStateInfo
func (app *DotWeb) Use(m ...Middleware)
Use registers middlewares
func (app *DotWeb) UseRequestLog()
UseRequestLog register RequestLogMiddleware
UseTimeoutHook register TimeoutHookMiddleware
type Group interface {
Use(m ...Middleware) Group
Group(prefix string, m ...Middleware) Group
DELETE(path string, h HttpHandle) RouterNode
GET(path string, h HttpHandle) RouterNode
HEAD(path string, h HttpHandle) RouterNode
OPTIONS(path string, h HttpHandle) RouterNode
PATCH(path string, h HttpHandle) RouterNode
POST(path string, h HttpHandle) RouterNode
PUT(path string, h HttpHandle) RouterNode
ServerFile(path string, fileroot string) RouterNode
RegisterRoute(method, path string, h HttpHandle) RouterNode
SetNotFoundHandle(handler StandardHandle) Group
}
Group is the interface that wraps the group router methods. A Group allows you to create routes with a common prefix and middleware chain.
func NewGroup(prefix string, server *HttpServer) Group
hijack conn
func (hj *HijackConn) SetHeader(key, value string)
SetHeader hjiack conn write header
WriteBlob hjiack conn write []byte
WriteString hjiack conn write string
type HttpContext struct {
}
AddView add need parse views before View()
AppContext get application's global appcontext issue #3
Attachment sends a response as attachment, prompting client to save the file. for issue #39
func (ctx *HttpContext) Bind(i interface{}) error
Bind decode req.Body or form-value to struct
func (*HttpContext) BindJsonBody ¶
func (ctx *HttpContext) BindJsonBody(i interface{}) error
BindJsonBody default use json decode req.Body to struct
Cache get application's global cache
ConfigSet get appset from config file update for issue #16 Config file
Context return context.Context
func (ctx *HttpContext) DestorySession() error
DestorySession delete all contents of the session and set the sessionId to empty
func (ctx *HttpContext) End()
End set context user handler process end if set HttpContext.End,ignore user handler, but exec all http module - fixed issue #5
File sends a response with the content of the file if file not exists, response 404 for issue #39
FormValue returns the first value for the named component of the query. POST and PUT body parameters take precedence over URL query string values.
GetRouterName get router name
func (*HttpContext) Handler ¶
func (ctx *HttpContext) Handler() HttpHandle
Hijack make current connection to hijack mode
func (ctx *HttpContext) HijackConn() *HijackConn
func (ctx *HttpContext) HttpServer() *HttpServer
HttpServer return HttpServer
Inline sends a response as inline, opening the file in the browser. if file not exists, response 404 for issue #39
func (ctx *HttpContext) IsHijack() bool
func (ctx *HttpContext) IsWebSocket() bool
Items get request's item context lazy init when first use
PostFormValue returns the first value for the named component of the POST, PATCH, or PUT request body. URL query parameters are ignored.
QueryInt get query key with int format if not exists or not int type, return 0
QueryInt64 get query key with int64 format if not exists or not int64 type, return 0
QueryString returns request parameters according to key
ReadCookie read cookie object for name
ReadCookieValue read cookie value for name
Redirect replies to the request with a redirect to url and with httpcode default you can use http.StatusFound
RemoteIP return user IP address
func (ctx *HttpContext) RemoveCookie(name string)
RemoveCookie remove cookie for path&name
func (ctx *HttpContext) Request() *Request
func (ctx *HttpContext) Response() *Response
func (ctx *HttpContext) RouterNode() RouterNode
func (ctx *HttpContext) RouterParams() Params
Session get session state in current context
SetCookie write cookie with cookie-obj
func (ctx *HttpContext) SetCookieValue(name, value string, maxAge int)
SetCookieValue write cookie for name & value & maxAge default path = "/" default domain = current domain default maxAge = 0 // seconds seconds=0 means no 'Max-Age' attribute specified. seconds<0 means delete cookie now, equivalently 'Max-Age: 0' seconds>0 means Max-Age attribute present and given in seconds
SetTimeoutContext set new Timeout Context set Context & cancle withvalue RequestID
func (ctx *HttpContext) Tools() *Tools
Tools get tools lazy init when first use
func (ctx *HttpContext) Validate(i interface{}) error
Validate validates data with HttpServer::Validator We will implementing inner validator on next version
View write view content to response
ViewC write (httpCode, view content) to response
ViewData get view data context lazy init when first use
func (ctx *HttpContext) WebSocket() *WebSocket
WithContext set Context with RequestID
Write write code and content content to response
WriteBlob write []byte content to response
WriteBlobC write (httpCode, []byte) to response
func (ctx *HttpContext) WriteHtml(contents ...interface{}) error
WriteString write (200, string, text/html) to response
func (ctx *HttpContext) WriteHtmlC(code int, contents ...interface{}) error
WriteHtmlC write (httpCode, string, text/html) to response
func (ctx *HttpContext) WriteJson(i interface{}) error
WriteJson write (httpCode, json string) to response auto convert interface{} to json string
WriteJsonBlob write json []byte to response
WriteJsonBlobC write (httpCode, json []byte) to response
func (ctx *HttpContext) WriteJsonC(code int, i interface{}) error
WriteJsonC write (httpCode, json string) to response auto convert interface{} to json string
func (ctx *HttpContext) WriteJsonp(callback string, i interface{}) error
WriteJsonp write jsonp string to response
WriteJsonpBlob write jsonp string as []byte to response
func (ctx *HttpContext) WriteString(contents ...interface{}) error
WriteString write (200, string, text/plain) to response
func (ctx *HttpContext) WriteStringC(code int, contents ...interface{}) error
WriteStringC write (httpCode, string, text/plain) to response
type HttpHandle ¶
HttpHandle is a function that can be registered to a route to handle HTTP requests. Like http.HandlerFunc, but has a special parameter Context contain all request and response data.
HttpModule global module in http server it will be no effect when websocket request or use offline mode
type HttpServer struct {
Modules []*HttpModule
DotApp *DotWeb
Validator Validator
}
func NewHttpServer() *HttpServer
func (server *HttpServer) Any(path string, handle HttpHandle)
ANY is a shortcut for router.Handle("Any", path, handle) it support GET\HEAD\POST\PUT\PATCH\OPTIONS\DELETE
func (server *HttpServer) Binder() Binder
Binder get binder interface in server
func (server *HttpServer) DELETE(path string, handle HttpHandle) RouterNode
DELETE is a shortcut for router.Handle("DELETE", path, handle)
GET is a shortcut for router.Handle("GET", path, handle)
GetSessionManager get session manager in current httpserver
Group create new group with current HttpServer
HEAD is a shortcut for router.Handle("HEAD", path, handle)
func (server *HttpServer) HiJack(path string, handle HttpHandle)
HiJack is a shortcut for router.HiJack(path, handle)
IndexPage default index page name
func (server *HttpServer) InitSessionManager()
InitSessionManager init session manager
func (server *HttpServer) IsOffline() bool
IsOffline check server is set offline state
func (*HttpServer) ListenAndServe ¶
ListenAndServe listens on the TCP network address srv.Addr and then calls Serve to handle requests on incoming connections.
func (*HttpServer) ListenAndServeTLS ¶
ListenAndServeTLS listens on the TCP network address srv.Addr and then calls Serve to handle requests on incoming TLS connections. Accepted connections are configured to enable TCP keep-alives.
Filenames containing a certificate and matching private key for the server must be provided if neither the Server's TLSConfig.Certificates nor TLSConfig.GetCertificate are populated. If the certificate is signed by a certificate authority, the certFile should be the concatenation of the server's certificate, any intermediates, and the CA's certificate.
If srv.Addr is blank, ":https" is used.
ListenAndServeTLS always returns a non-nil error.
Logger is a shortcut for dotweb.Logger
func (server *HttpServer) OPTIONS(path string, handle HttpHandle) RouterNode
OPTIONS is a shortcut for router.Handle("OPTIONS", path, handle)
PATCH is a shortcut for router.Handle("PATCH", path, handle)
POST is a shortcut for router.Handle("POST", path, handle)
PUT is a shortcut for router.Handle("PUT", path, handle)
func (*HttpServer) RegisterHandlerFunc ¶ added in v1.7.5
RegisterHandlerFunc a shortcut for router.RegisterHandlerFunc(routeMethod string, path string, handler http.HandlerFunc)
func (server *HttpServer) RegisterModule(module *HttpModule)
RegisterModule add HttpModule
RegisterRoute a shortcut for router.RegisterRoute(routeMethod string, path string,handle HttpHandle)
RegisterServerFile a shortcut for router.RegisterServerFile(routeMethod, path, fileRoot) simple demo:server.RegisterServerFile(RouteMethod_GET, "/src/*", "/var/www", nil) simple demo:server.RegisterServerFile(RouteMethod_GET, "/src/*filepath", "/var/www", []string{".zip", ".rar"})
func (server *HttpServer) Renderer() Renderer
Renderer get renderer interface in server if no set, init InnerRenderer
func (server *HttpServer) Router() Router
Router get router interface in server
ServeHTTP make sure request can be handled correctly
ServerConfig a shortcut for App.Config.ServerConfig
ServerFile a shortcut for router.ServeFiles(path, fileRoot) simple demo:server.ServerFile("/src/*filepath", "/var/www")
SessionConfig a shortcut for App.Config.SessionConfig
func (server *HttpServer) SetBinder(binder Binder)
SetBinder set custom Binder on HttpServer
func (server *HttpServer) SetContextCreater(creater ContextCreater)
SetContextCreater
func (server *HttpServer) SetEnabledAutoHEAD(isEnabled bool)
SetEnabledAutoHEAD set route use auto head set EnabledAutoHEAD true or false default is false
func (server *HttpServer) SetEnabledAutoOPTIONS(isEnabled bool)
SetEnabledAutoOPTIONS set route use auto options set SetEnabledAutoOPTIONS true or false default is false
func (server *HttpServer) SetEnabledBindUseJsonTag(isEnabled bool)
SetEnabledBindUseJsonTag set whethr to enable json tab on Bind, default is false
func (server *HttpServer) SetEnabledDetailRequestData(isEnabled bool)
SetEnabledDetailRequestData 设置是否启用详细请求数据统计,默认为false
func (server *HttpServer) SetEnabledGzip(isEnabled bool)
SetEnabledGzip set whether to enable gzip, default is false
func (server *HttpServer) SetEnabledIgnoreFavicon(isEnabled bool)
SetEnabledIgnoreFavicon set IgnoreFavicon Enabled default is false
func (server *HttpServer) SetEnabledListDir(isEnabled bool)
SetEnabledListDir set whether to allow listing of directories, default is false
func (server *HttpServer) SetEnabledRequestID(isEnabled bool)
SetEnabledRequestID set create unique request id per request set EnabledRequestID true or false default is false
func (server *HttpServer) SetEnabledSession(isEnabled bool)
SetEnabledSession set whether to enable session, default is false
func (server *HttpServer) SetEnabledStaticFileMiddleware(isEnabled bool)
SetEnabledStaticFileMiddleware set flag which enabled or disabled middleware for static-file route
func (server *HttpServer) SetEnabledTLS(isEnabled bool, certFile, keyFile string)
SetEnabledTLS set tls enabled default is false if it's true, must input certificate\private key fileName
func (server *HttpServer) SetIdleTimeout(idleTimeout int64)
SetIdleTimeout IdleTimeout is the maximum amount of time to wait for the next request when keep-alives are enabled with Millisecond
func (server *HttpServer) SetIndexPage(indexPage string)
SetIndexPage set default index page name
func (*HttpServer) SetMaxBodySize ¶ added in v1.7.3
func (server *HttpServer) SetMaxBodySize(maxBodySize int64)
SetMaxBodySize set body size to limit read
SetOffline set server offline config
func (server *HttpServer) SetReadHeaderTimeout(readHeaderTimeout int64)
SetReadHeaderTimeout ReadHeaderTimeout is the amount of time allowed to read request headers with Millisecond
func (server *HttpServer) SetReadTimeout(readTimeout int64)
SetReadTimeout To limit the request's body size to be read with Millisecond
func (server *HttpServer) SetRenderer(r Renderer)
SetRenderer set custom renderer in server
SetSessionConfig set session store config
func (server *HttpServer) SetVirtualPath(path string)
SetVirtualPath set current server's VirtualPath
func (server *HttpServer) SetWriteTimeout(writeTimeout int64)
SetWriteTimeout WriteTimeout is the maximum duration before timing out writes of the response with Millisecond
StateInfo is a shortcut for dotweb.StateInfo
func (server *HttpServer) VirtualPath() string
VirtualPath return current server's VirtualPath
func (server *HttpServer) WebSocket(path string, handle HttpHandle)
WebSocket is a shortcut for router.WebSocket(path, handle)
IdGenerater the handler for create Unique Id default is use dotweb.
type Middleware interface {
Handle(ctx Context) error
SetNext(m Middleware)
Next(ctx Context) error
Exclude(routers ...string)
HasExclude() bool
ExistsExcludeRouter(router string) bool
}
middleware execution priority: app > group > router Middleware middleware interface
type MiddlewareFunc func() Middleware
type Mock interface {
Register(route string, handler MockHandle)
RegisterString(route string, resData interface{})
RegisterJSON(route string, resData interface{})
CheckNeedMock(Context) bool
Do(Context)
}
Mock the define Mock module
func (n *Node) AppMiddlewares() []Middleware
AppMiddlewares return AppMiddlewares
func (n *Node) GroupMiddlewares() []Middleware
GroupMiddlewares return GroupMiddlewares
func (n *Node) Middlewares() []Middleware
Middlewares return middlewares
Path return full path in node
func (n *Node) Use(m ...Middleware) *Node
Use registers a middleware
func NewDefaultNotifyPlugin(app *DotWeb) *NotifyPlugin
NewDefaultNotifyPlugin return new NotifyPlugin with default config
func (p *NotifyPlugin) IsValidate() bool
Param is a single URL parameter, consisting of a key and a value.
Params is a Param-slice, as returned by the router. The slice is ordered, the first URL parameter is also the first slice value. It is therefore safe to read values by the index.
ByName returns the value of the first Param which key matches the given name. If no matching Param is found, an empty string is returned.
Plugin a interface for app's global plugin
Renderer is the interface that wraps the render method.
func NewInnerRenderer() Renderer
NewInnerRenderer create a inner renderer instance
func NewInnerRendererNoCache() Renderer
NewInnerRendererNoCache create a inner renderer instance with no cache mode
func (*Request) ContentType ¶
ContentType get ContentType
ExistsQueryKey check is exists from query params with the given key.
FormFile get file by form key
FormFiles get multi files fixed #92
FormValues including both the URL field's query parameters and the POST or PUT form data
Path returns requested path.
The path is valid until returning from RequestHandler.
PostString returns the first value for the named component of the POST or PUT request body. URL query parameters are ignored. Deprecated: Use the PostFormValue instead
PostValues contains the parsed form data from POST, PATCH, or PUT body parameters
QueryHeader query header value by key
QueryString returns the first value associated with the given key.
QueryStrings parses RawQuery and returns the corresponding values.
RawQuery returns the original query string
RealIP returns the first ip from 'X-Forwarded-For' or 'X-Real-IP' header key if not exists data, returns request.RemoteAddr fixed for #164
RemoteIP RemoteAddr to an "IP" address
RequestID get unique ID with current request must HttpServer.SetEnabledRequestID(true) default is empty string
type RequestLogMiddleware struct {
BaseMiddleware
}
End stop current response
Write writes the data to the connection as part of an HTTP reply.
WriteHeader sends an HTTP response header with status code. If WriteHeader is not called explicitly, the first call to Write will trigger an implicit WriteHeader(http.StatusOK). Thus explicit calls to WriteHeader are mainly used to send error codes.
type Router interface {
ServeHTTP(ctx Context)
ServerFile(path string, fileRoot string) RouterNode
RegisterServerFile(routeMethod string, path string, fileRoot string, excludeExtension []string) RouterNode
GET(path string, handle HttpHandle) RouterNode
HEAD(path string, handle HttpHandle) RouterNode
OPTIONS(path string, handle HttpHandle) RouterNode
POST(path string, handle HttpHandle) RouterNode
PUT(path string, handle HttpHandle) RouterNode
PATCH(path string, handle HttpHandle) RouterNode
DELETE(path string, handle HttpHandle) RouterNode
HiJack(path string, handle HttpHandle)
WebSocket(path string, handle HttpHandle)
Any(path string, handle HttpHandle)
RegisterHandlerFunc(routeMethod string, path string, handler http.HandlerFunc) RouterNode
RegisterRoute(routeMethod string, path string, handle HttpHandle) RouterNode
RegisterHandler(name string, handler HttpHandle)
GetHandler(name string) (HttpHandle, bool)
MatchPath(ctx Context, routePath string) bool
GetAllRouterExpress() map[string]struct{}
}
Router is the interface that wraps the router method.
type RouterHandle ¶
type RouterHandle func(ctx Context)
Handle is a function that can be registered to a route to handle HTTP requests. Like http.HandlerFunc, but has a third parameter for the values of wildcards (variables).
type RouterNode interface {
Use(m ...Middleware) *Node
AppMiddlewares() []Middleware
GroupMiddlewares() []Middleware
Middlewares() []Middleware
Path() string
Node() *Node
}
type StandardHandle ¶
type StandardHandle func(Context)
StandardHandle for standard request handling
type StandardMock ¶
type StandardMock struct {
}
StandardMock standard mock implement for Mock interface
func (*StandardMock) CheckNeedMock ¶
func (m *StandardMock) CheckNeedMock(ctx Context) bool
CheckNeedMock check is need do mock logic
func (*StandardMock) Register ¶
func (m *StandardMock) Register(route string, handler MockHandle)
Register register MockHandle on route
func (*StandardMock) RegisterJSON ¶
func (m *StandardMock) RegisterJSON(route string, resData interface{})
RegisterJSON register return mock json on route
func (*StandardMock) RegisterString ¶
func (m *StandardMock) RegisterString(route string, resData interface{})
RegisterString register return mock string on route
type TimeoutHookMiddleware struct {
BaseMiddleware
HookHandle StandardHandle
TimeoutDuration time.Duration
}
FileName get upload file client-local name
GetFileExt get upload file extensions
func (*UploadFile) RandomFileName ¶
RandomFileName get upload file random name with uuid
func (f *UploadFile) ReadBytes() []byte
ReadBytes Bytes returns a slice of byte hoding the UploadFile.File special: if you read bytes, it's will cause empty data in UploadFile.File, so you use SaveFile will no any data to save
SaveFile save file in server-local with filename special: if you SaveFile, it's will cause empty data when use ReadBytes
Size get upload file size
type Validator interface {
Validate(i interface{}) error
}
Validator is the interface that wraps the Validate function.
ReadMessage read message from websocket.conn
SendMessage send message from websocket.conn