Documentation
¶
Overview ¶
package goben implements a HTTP web framework called gin.
See https://gin-gonic.com/ for more information about gin.
Index ¶
- Constants
- Variables
- func AutoRegister(r *Engine, controller interface{}) (err error)
- func CheckDirExists(pathDir string) bool
- func Dir(root string, listDirectory bool) http.FileSystem
- func DisableBindValidation()
- func DisableConsoleColor()
- func EnableJsonDecoderDisallowUnknownFields()
- func EnableJsonDecoderUseNumber()
- func ForceConsoleColor()
- func GetTable(table interface{}) (tableName string)
- func GetTableColumnsTypeRow(rows *sql.Rows) (result []interface{}, err error)
- func GetTableField(table interface{}) (result []byte, err error)
- func IsDebugging() bool
- func Mkdir(dir string) (e error)
- func Mode() string
- func NewGoBenStart()
- func SetMode(value string)
- func SystemdService(displayName, description string, onStart func(string), onStop func(string))
- func Transactions(queueList []DataTransactions) (err error)
- type Accounts
- type CaptchaSetting
- type Context
- func (c *Context) Abort()
- func (c *Context) AbortWithError(code int, err error) *Error
- func (c *Context) AbortWithStatus(code int)
- func (c *Context) AbortWithStatusJSON(code int, jsonObj any)
- func (c *Context) AddParam(key, value string)
- func (c *Context) AsciiJSON(code int, obj any)
- func (c *Context) Bind(obj any) error
- func (c *Context) BindHeader(obj any) error
- func (c *Context) BindJSON(obj any) error
- func (c *Context) BindPlain(obj any) error
- func (c *Context) BindQuery(obj any) error
- func (c *Context) BindTOML(obj any) error
- func (c *Context) BindUri(obj any) error
- func (c *Context) BindWith(obj any, b binding.Binding) errordeprecated
- func (c *Context) BindXML(obj any) error
- func (c *Context) BindYAML(obj any) error
- func (c *Context) Captcha(width, height int)
- func (c *Context) CaptchaVerify(code string) bool
- func (c *Context) ClientIP() string
- func (c *Context) ContentType() string
- func (c *Context) Cookie(name string) (string, error)
- func (c *Context) Copy() *Context
- 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) Deadline() (deadline time.Time, ok bool)
- func (c *Context) DefaultPostForm(key, defaultValue string) string
- func (c *Context) DefaultQuery(key, defaultValue string) string
- func (c *Context) DelSession(name string) error
- func (c *Context) Done() <-chan struct{}
- func (c *Context) Err() error
- func (c *Context) Error(err error) *Error
- func (c *Context) File(filepath string)
- func (c *Context) FileAttachment(filepath, filename string)
- func (c *Context) FileFromFS(filepath string, fs http.FileSystem)
- func (c *Context) FormFile(name string) (*multipart.FileHeader, error)
- func (c *Context) FullPath() 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) GetFloat32(key string) (f32 float32)
- func (c *Context) GetFloat32Slice(key string) (f32s []float32)
- func (c *Context) GetFloat64(key string) (f64 float64)
- func (c *Context) GetFloat64Slice(key string) (f64s []float64)
- func (c *Context) GetHeader(key string) string
- func (c *Context) GetInt(key string) (i int)
- func (c *Context) GetInt16(key string) (i16 int16)
- func (c *Context) GetInt16Slice(key string) (i16s []int16)
- func (c *Context) GetInt32(key string) (i32 int32)
- func (c *Context) GetInt32Slice(key string) (i32s []int32)
- func (c *Context) GetInt64(key string) (i64 int64)
- func (c *Context) GetInt64Slice(key string) (i64s []int64)
- func (c *Context) GetInt8(key string) (i8 int8)
- func (c *Context) GetInt8Slice(key string) (i8s []int8)
- func (c *Context) GetIntSlice(key string) (is []int)
- func (c *Context) GetPostForm(key string) (string, bool)
- func (c *Context) GetPostFormArray(key string) (values []string, ok bool)
- func (c *Context) GetPostFormMap(key string) (map[string]string, bool)
- func (c *Context) GetQuery(key string) (string, bool)
- func (c *Context) GetQueryArray(key string) (values []string, ok bool)
- func (c *Context) GetQueryMap(key string) (map[string]string, bool)
- func (c *Context) GetRawData() ([]byte, error)
- func (c *Context) GetSession(name string) (string, error)
- 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) GetUint16(key string) (ui16 uint16)
- func (c *Context) GetUint16Slice(key string) (ui16s []uint16)
- func (c *Context) GetUint32(key string) (ui32 uint32)
- func (c *Context) GetUint32Slice(key string) (ui32s []uint32)
- func (c *Context) GetUint64(key string) (ui64 uint64)
- func (c *Context) GetUint64Slice(key string) (ui64s []uint64)
- func (c *Context) GetUint8(key string) (ui8 uint8)
- func (c *Context) GetUint8Slice(key string) (ui8s []uint8)
- func (c *Context) GetUintSlice(key string) (uis []uint)
- func (c *Context) HTML(code int, name string, obj any)
- func (c *Context) Handler() HandlerFunc
- func (c *Context) HandlerName() string
- func (c *Context) HandlerNames() []string
- func (c *Context) Header(key, value string)
- func (c *Context) Html(name string, obj any)
- func (c *Context) IndentedJSON(code int, obj any)
- func (c *Context) IsAajax() bool
- func (c *Context) IsAborted() bool
- func (c *Context) IsGet() bool
- func (c *Context) IsPost() bool
- func (c *Context) IsWebsocket() bool
- func (c *Context) JSON(code int, obj any)
- func (c *Context) JSONP(code int, obj any)
- func (c *Context) Layout(name string, obj any, layout string)
- func (c *Context) MultipartForm() (*multipart.Form, error)
- func (c *Context) MustBindWith(obj any, b binding.Binding) error
- func (c *Context) MustGet(key string) any
- func (c *Context) Negotiate(code int, config Negotiate)
- func (c *Context) NegotiateFormat(offered ...string) string
- func (c *Context) Next()
- func (c *Context) Out(name string, obj any)
- func (c *Context) OutHtml(name string, obj any) (template.HTML, error)
- func (c *Context) Param(key string) string
- func (c *Context) PostForm(key string) (value string)
- func (c *Context) PostFormArray(key string) (values []string)
- func (c *Context) PostFormMap(key string) (dicts map[string]string)
- func (c *Context) ProtoBuf(code int, obj any)
- func (c *Context) PureJSON(code int, obj any)
- func (c *Context) Query(key string) (value string)
- func (c *Context) QueryArray(key string) (values []string)
- func (c *Context) QueryMap(key string) (dicts map[string]string)
- func (c *Context) Redirect(code int, location string)
- func (c *Context) RemoteIP() string
- func (c *Context) Render(code int, r render.Render)
- func (c *Context) Result(status int, msg string, datalist ...any)
- func (c *Context) ResultAuto(err error, datalist ...any)
- func (c *Context) ResultHtml(name string, obj any)
- func (c *Context) SSEvent(name string, message any)
- func (c *Context) SaveUploadedFile(file *multipart.FileHeader, dst string, perm ...fs.FileMode) error
- func (c *Context) SecureJSON(code int, obj any)
- func (c *Context) Set(key string, value any)
- func (c *Context) SetAccepted(formats ...string)
- func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)
- func (c *Context) SetSameSite(samesite http.SameSite)
- func (c *Context) SetSession(name string, val string) error
- func (c *Context) ShouldBind(obj any) error
- func (c *Context) ShouldBindBodyWith(obj any, bb binding.BindingBody) (err error)
- func (c *Context) ShouldBindBodyWithJSON(obj any) error
- func (c *Context) ShouldBindBodyWithPlain(obj any) error
- func (c *Context) ShouldBindBodyWithTOML(obj any) error
- func (c *Context) ShouldBindBodyWithXML(obj any) error
- func (c *Context) ShouldBindBodyWithYAML(obj any) error
- func (c *Context) ShouldBindHeader(obj any) error
- func (c *Context) ShouldBindJSON(obj any) error
- func (c *Context) ShouldBindPlain(obj any) error
- func (c *Context) ShouldBindQuery(obj any) error
- func (c *Context) ShouldBindTOML(obj any) error
- func (c *Context) ShouldBindUri(obj any) error
- func (c *Context) ShouldBindWith(obj any, b binding.Binding) error
- func (c *Context) ShouldBindXML(obj any) error
- func (c *Context) ShouldBindYAML(obj any) error
- func (c *Context) Status(code int)
- func (c *Context) Stream(step func(w io.Writer) bool) bool
- func (c *Context) String(code int, format string, values ...any)
- func (c *Context) TOML(code int, obj any)
- func (c *Context) Upload(config *UploadConfig, callBack UploadCallBackFunStatus) (in *InMessage, out OutMessage, err error)
- func (c *Context) UploadFile(fileDir string, callBack UploadCallBackFunStatus) (err error)
- func (c *Context) Value(key any) any
- func (c *Context) XML(code int, obj any)
- func (c *Context) YAML(code int, obj any)
- type ContextCallBackFunc
- type ContextKeyType
- type CookieSetting
- type DataTransactions
- type DefaultSetting
- type Engine
- func (engine *Engine) Delims(left, right string) *Engine
- func (engine *Engine) HandleContext(c *Context)
- func (engine *Engine) Handler() http.Handler
- func (engine *Engine) LoadHTMLFiles(files ...string)
- func (engine *Engine) LoadHTMLGlob(pattern string)
- func (engine *Engine) NoMethod(handlers ...HandlerFunc)
- func (engine *Engine) NoRoute(handlers ...HandlerFunc)
- func (engine *Engine) Routes() (routes RoutesInfo)
- func (engine *Engine) Run(addr ...string) (err error)
- func (engine *Engine) RunFd(fd int) (err error)
- func (engine *Engine) RunListener(listener net.Listener) (err error)
- func (engine *Engine) RunQUIC(addr, certFile, keyFile string) (err error)
- func (engine *Engine) RunTLS(addr, certFile, keyFile string) (err error)
- func (engine *Engine) RunUnix(file string) (err error)
- func (engine *Engine) SecureJsonPrefix(prefix string) *Engine
- func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request)
- func (engine *Engine) SetCentextCallPram()
- func (engine *Engine) SetContextCallBack(funs ContextCallBackFunc)
- func (engine *Engine) SetFsTemplate(_fs embed.FS, layout, extension string)
- func (engine *Engine) SetFsTemplateDebug(viewPath, layout, extension string)
- func (engine *Engine) SetFuncMap(funcMap template.FuncMap)
- func (engine *Engine) SetHTMLTemplate(templ *template.Template)
- func (engine *Engine) SetTrustedProxies(trustedProxies []string) error
- func (engine *Engine) Use(middleware ...HandlerFunc) IRoutes
- func (engine *Engine) With(opts ...OptionFunc) *Engine
- type Error
- type ErrorType
- type H
- type HandlerFunc
- func BasicAuth(accounts Accounts) HandlerFunc
- func BasicAuthForProxy(accounts Accounts, realm string) HandlerFunc
- func BasicAuthForRealm(accounts Accounts, realm string) HandlerFunc
- func Bind(val any) HandlerFunc
- func CustomRecovery(handle RecoveryFunc) HandlerFunc
- func CustomRecoveryWithWriter(out io.Writer, handle RecoveryFunc) HandlerFunc
- func DefaultSessionUse() HandlerFunc
- func ErrorLogger() HandlerFunc
- func ErrorLoggerT(typ ErrorType) HandlerFunc
- func Logger() HandlerFunc
- func LoggerWithConfig(conf LoggerConfig) HandlerFunc
- func LoggerWithFormatter(f LogFormatter) HandlerFunc
- func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc
- func Recovery() HandlerFunc
- func RecoveryWithWriter(out io.Writer, recovery ...RecoveryFunc) HandlerFunc
- func SetDefaultSettingUser() HandlerFunc
- func WrapF(f http.HandlerFunc) HandlerFunc
- func WrapH(h http.Handler) HandlerFunc
- type HandlersChain
- type HeaderSetting
- type IDb
- type IDbConfig
- type IRouter
- type IRoutes
- type InMessage
- type LogFormatter
- type LogFormatterParams
- type LogSetting
- type LoggerConfig
- type Negotiate
- type OnlyFilesFS
- type OptionFunc
- type OutMessage
- type Param
- type Params
- type RecoveryFunc
- type ResponseWriter
- type RouteInfo
- type RouterGroup
- func (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc) IRoutes
- func (group *RouterGroup) Auto(controller interface{}) IRoutes
- func (group *RouterGroup) BasePath() string
- func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) IRoutes
- func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) IRoutes
- func (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup
- func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) IRoutes
- func (group *RouterGroup) Handle(httpMethod, relativePath string, handlers ...HandlerFunc) IRoutes
- func (group *RouterGroup) Match(methods []string, relativePath string, handlers ...HandlerFunc) IRoutes
- func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) IRoutes
- func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) IRoutes
- func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes
- func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) IRoutes
- func (group *RouterGroup) Static(relativePath, root string) IRoutes
- func (group *RouterGroup) StaticFS(relativePath string, fs http.FileSystem) IRoutes
- func (group *RouterGroup) StaticFile(relativePath, filepath string) IRoutes
- func (group *RouterGroup) StaticFileFS(relativePath, filepath string, fs http.FileSystem) IRoutes
- func (group *RouterGroup) Use(middleware ...HandlerFunc) IRoutes
- type RoutesInfo
- type SessionSetting
- type Skipper
- type UploadCallBackFunStatus
- type UploadConfig
- type UploadFile
- func (ths *UploadFile) GetFileExtension(filename string) string
- func (ths *UploadFile) GetFileName(filename string) string
- func (ths *UploadFile) UploadSize(name string, file *multipart.FileHeader) (in *InMessage, out OutMessage, err error)
- func (ths *UploadFile) UploadSlice(name, uuid string, chunk, chunks int, file *multipart.FileHeader) (in *InMessage, out OutMessage, err error)
- type UploadSetting
Constants ¶
const ( MIMEJSON = binding.MIMEJSON MIMEHTML = binding.MIMEHTML MIMEXML = binding.MIMEXML MIMEXML2 = binding.MIMEXML2 MIMEPlain = binding.MIMEPlain MIMEPOSTForm = binding.MIMEPOSTForm MIMEMultipartPOSTForm = binding.MIMEMultipartPOSTForm MIMEYAML = binding.MIMEYAML MIMEYAML2 = binding.MIMEYAML2 MIMETOML = binding.MIMETOML )
Content-Type MIME of the most common data formats.
const ( // PlatformGoogleAppEngine when running on Google App Engine. Trust X-Appengine-Remote-Addr // for determining the client's IP PlatformGoogleAppEngine = "X-Appengine-Remote-Addr" // PlatformCloudflare when using Cloudflare's CDN. Trust CF-Connecting-IP for determining // the client's IP PlatformCloudflare = "CF-Connecting-IP" // PlatformFlyIO when running on Fly.io. Trust Fly-Client-IP for determining the client's IP PlatformFlyIO = "Fly-Client-IP" )
Trusted platforms
const ( // DebugMode indicates gin mode is debug. DebugMode = "debug" // ReleaseMode indicates gin mode is release. ReleaseMode = "release" // TestMode indicates gin mode is test. TestMode = "test" )
const AuthProxyUserKey = "proxy_user"
AuthProxyUserKey is the cookie name for proxy_user credential in basic auth for proxy.
const AuthUserKey = "user"
每个系统参数一个session:md5(包含IP,项目名称,时间),数据:外部数据,客户IP,时间戳 需要拦截中间件,每次自动更新session AuthUserKey is the cookie name for user credential in basic auth.
const BindKey = "_gin-gonic/gin/bindkey"
BindKey indicates a default bind key.
const BodyBytesKey = "_gin-gonic/gin/bodybyteskey"
BodyBytesKey indicates a default body bytes key.
const ContextKey = "_gin-gonic/gin/contextkey"
ContextKey is the key that a Context returns itself for.
const EnvGinMode = "GIN_MODE"
EnvGinMode indicates environment name for gin mode.
const Version = "v1.10.0"
Version is the current gin framework's version.
Variables ¶
var DebugPrintFunc func(format string, values ...interface{})
DebugPrintFunc indicates debug log output format.
var DebugPrintRouteFunc func(httpMethod, absolutePath, handlerName string, nuHandlers int)
DebugPrintRouteFunc indicates debug log output format.
var DefaultErrorWriter io.Writer = os.Stderr
DefaultErrorWriter is the default io.Writer used by Gin to debug errors
var DefaultWriter io.Writer = os.Stdout
DefaultWriter is the default io.Writer used by Gin for debug output and middleware output like Logger() or Recovery(). Note that both Logger and Recovery provides custom ways to configure their output io.Writer. To support coloring in Windows use:
import "github.com/mattn/go-colorable" gin.DefaultWriter = colorable.NewColorableStdout()
Functions ¶
func AutoRegister ¶
结构图方法,如果是get_,post_put_delete_等前缀的方法,会自动识别为对应的http方法 自动添加结构体,自动检查mvc的路径,用&controller{}
func Dir ¶
func Dir(root string, listDirectory bool) http.FileSystem
Dir returns an http.FileSystem that can be used by http.FileServer(). It is used internally in router.Static(). if listDirectory == true, then it works the same as http.Dir(), otherwise it returns a filesystem that prevents http.FileServer() to list the directory files.
func DisableBindValidation ¶
func DisableBindValidation()
DisableBindValidation closes the default validator.
func DisableConsoleColor ¶
func DisableConsoleColor()
DisableConsoleColor disables color output in the console.
func EnableJsonDecoderDisallowUnknownFields ¶
func EnableJsonDecoderDisallowUnknownFields()
EnableJsonDecoderDisallowUnknownFields sets true for binding.EnableDecoderDisallowUnknownFields to call the DisallowUnknownFields method on the JSON Decoder instance.
func EnableJsonDecoderUseNumber ¶
func EnableJsonDecoderUseNumber()
EnableJsonDecoderUseNumber sets true for binding.EnableDecoderUseNumber to call the UseNumber method on the JSON Decoder instance.
func ForceConsoleColor ¶
func ForceConsoleColor()
ForceConsoleColor force color output in the console.
func GetTableColumnsTypeRow ¶
有些表字段和go语言无法识别,需要手动转换一下表字段类型,这里写一个函数来做这件事
func IsDebugging ¶
func IsDebugging() bool
IsDebugging returns true if the framework is running in debug mode. Use SetMode(gin.ReleaseMode) to disable debug mode.
func SystemdService ¶
开始服务进程入口 displayName 简单描述应用, description 详细描述应用, onStart 启动时回调, onStop 停止时回调,
Types ¶
type CaptchaSetting ¶
type CaptchaSetting struct { CaptchaName string //验证码的名称,默认是captchaId KeyLong int64 //验证码的长度,默认是6位数字加字母组合 MaxWidth int //验证码的最大宽度,默认100px MinWidth int //验证码的最小宽度,默认50px Ext string //验证码的类型,默认是.png 或者.wav }
图形验证码
type Context ¶
type Context struct { Request *http.Request Writer ResponseWriter Params Params // Keys is a key/value pair exclusively for the context of each request. Keys map[string]any // Errors is a list of errors attached to all the handlers/middlewares who used this context. Errors errorMsgs // Accepted defines a list of manually accepted formats for content negotiation. Accepted []string // contains filtered or unexported fields }
Context is the most important part of gin. It allows us to pass variables between middleware, manage the flow, validate the JSON of a request and render a JSON response for example.
func (*Context) Abort ¶
func (c *Context) Abort()
Abort prevents pending handlers from being called. Note that this will not stop the current handler. Let's say you have an authorization middleware that validates that the current request is authorized. If the authorization fails (ex: the password does not match), call Abort to ensure the remaining handlers for this request are not called.
func (*Context) AbortWithError ¶
AbortWithError calls `AbortWithStatus()` and `Error()` internally. This method stops the chain, writes the status code and pushes the specified error to `c.Errors`. See Context.Error() for more details.
func (*Context) AbortWithStatus ¶
AbortWithStatus calls `Abort()` and writes the headers with the specified status code. For example, a failed attempt to authenticate a request could use: context.AbortWithStatus(401).
func (*Context) AbortWithStatusJSON ¶
AbortWithStatusJSON calls `Abort()` and then `JSON` internally. This method stops the chain, writes the status code and return a JSON body. It also sets the Content-Type as "application/json".
func (*Context) AddParam ¶
AddParam adds param to context and replaces path param key with given value for e2e testing purposes Example Route: "/user/:id" AddParam("id", 1) Result: "/user/1"
func (*Context) AsciiJSON ¶
AsciiJSON serializes the given struct as JSON into the response body with unicode to ASCII string. It also sets the Content-Type as "application/json".
func (*Context) Bind ¶
Bind checks the Method and Content-Type to select a binding engine automatically, Depending on the "Content-Type" header different bindings are used, for example:
"application/json" --> JSON binding "application/xml" --> XML binding
It parses the request's body as JSON if Content-Type == "application/json" using JSON or XML as a JSON input. It decodes the json payload into the struct specified as a pointer. It writes a 400 error and sets Content-Type header "text/plain" in the response if input is not valid. 通过json格式提交
func (*Context) BindHeader ¶
BindHeader is a shortcut for c.MustBindWith(obj, binding.Header).
func (*Context) BindUri ¶
BindUri binds the passed struct pointer using binding.Uri. It will abort the request with HTTP 400 if any error occurs.
func (*Context) ClientIP ¶
ClientIP implements one best effort algorithm to return the real client IP. It calls c.RemoteIP() under the hood, to check if the remote IP is a trusted proxy or not. If it is it will then try to parse the headers defined in Engine.RemoteIPHeaders (defaulting to [X-Forwarded-For, X-Real-Ip]). If the headers are not syntactically valid OR the remote IP does not correspond to a trusted proxy, the remote IP (coming from Request.RemoteAddr) is returned.
func (*Context) ContentType ¶
ContentType returns the Content-Type header of the request.
func (*Context) Cookie ¶
Cookie returns the named cookie provided in the request or ErrNoCookie if not found. And return the named cookie is unescaped. If multiple cookies match the given name, only one cookie will be returned.
func (*Context) Copy ¶
Copy returns a copy of the current context that can be safely used outside the request's scope. This has to be used when the context has to be passed to a goroutine.
func (*Context) DataFromReader ¶
func (c *Context) DataFromReader(code int, contentLength int64, contentType string, reader io.Reader, extraHeaders map[string]string)
DataFromReader writes the specified reader into the body stream and updates the HTTP code.
func (*Context) Deadline ¶
Deadline returns that there is no deadline (ok==false) when c.Request has no Context.
func (*Context) DefaultPostForm ¶
DefaultPostForm returns the specified key from a POST urlencoded form or multipart form when it exists, otherwise it returns the specified defaultValue string. See: PostForm() and GetPostForm() for further information.
func (*Context) DefaultQuery ¶
DefaultQuery returns the keyed url query value if it exists, otherwise it returns the specified defaultValue string. See: Query() and GetQuery() for further information.
GET /?name=Manu&lastname= c.DefaultQuery("name", "unknown") == "Manu" c.DefaultQuery("id", "none") == "none" c.DefaultQuery("lastname", "none") == ""
func (*Context) Done ¶
func (c *Context) Done() <-chan struct{}
Done returns nil (chan which will wait forever) when c.Request has no Context.
func (*Context) Error ¶
Error attaches an error to the current context. The error is pushed to a list of errors. It's a good idea to call Error for each error that occurred during the resolution of a request. A middleware can be used to collect all the errors and push them to a database together, print a log, or append it in the HTTP response. Error will panic if err is nil.
func (*Context) FileAttachment ¶
FileAttachment writes the specified file into the body stream in an efficient way On the client side, the file will typically be downloaded with the given filename
func (*Context) FileFromFS ¶
func (c *Context) FileFromFS(filepath string, fs http.FileSystem)
FileFromFS writes the specified file from http.FileSystem into the body stream in an efficient way.
func (*Context) FormFile ¶
func (c *Context) FormFile(name string) (*multipart.FileHeader, error)
FormFile returns the first file for the provided form key.
func (*Context) FullPath ¶
FullPath returns a matched route full path. For not found routes returns an empty string.
router.GET("/user/:id", func(c *gin.Context) { c.FullPath() == "/user/:id" // true })
func (*Context) Get ¶
Get returns the value for the given key, ie: (value, true). If the value does not exist it returns (nil, false)
func (*Context) GetDuration ¶
GetDuration returns the value associated with the key as a duration.
func (*Context) GetFloat32 ¶
GetFloat32 returns the value associated with the key as a float32.
func (*Context) GetFloat32Slice ¶
GetFloat32Slice returns the value associated with the key as a slice of float32 numbers.
func (*Context) GetFloat64 ¶
GetFloat64 returns the value associated with the key as a float64.
func (*Context) GetFloat64Slice ¶
GetFloat64Slice returns the value associated with the key as a slice of float64 numbers.
func (*Context) GetInt16Slice ¶
GetInt16Slice returns the value associated with the key as a slice of int16 integers.
func (*Context) GetInt32Slice ¶
GetInt32Slice returns the value associated with the key as a slice of int32 integers.
func (*Context) GetInt64Slice ¶
GetInt64Slice returns the value associated with the key as a slice of int64 integers.
func (*Context) GetInt8Slice ¶
GetInt8Slice returns the value associated with the key as a slice of int8 integers.
func (*Context) GetIntSlice ¶
GetIntSlice returns the value associated with the key as a slice of integers.
func (*Context) GetPostForm ¶
GetPostForm is like PostForm(key). It returns the specified key from a POST urlencoded form or multipart form when it exists `(value, true)` (even when the value is an empty string), otherwise it returns ("", false). For example, during a PATCH request to update the user's email:
email=mail@example.com --> ("mail@example.com", true) := GetPostForm("email") // set email to "mail@example.com" email= --> ("", true) := GetPostForm("email") // set email to "" --> ("", false) := GetPostForm("email") // do nothing with email
func (*Context) GetPostFormArray ¶
GetPostFormArray returns a slice of strings for a given form key, plus a boolean value whether at least one value exists for the given key.
func (*Context) GetPostFormMap ¶
GetPostFormMap returns a map for a given form key, plus a boolean value whether at least one value exists for the given key.
func (*Context) GetQuery ¶
GetQuery is like Query(), it returns the keyed url query value if it exists `(value, true)` (even when the value is an empty string), otherwise it returns `("", false)`. It is shortcut for `c.Request.URL.Query().Get(key)`
GET /?name=Manu&lastname= ("Manu", true) == c.GetQuery("name") ("", false) == c.GetQuery("id") ("", true) == c.GetQuery("lastname")
func (*Context) GetQueryArray ¶
GetQueryArray returns a slice of strings for a given query key, plus a boolean value whether at least one value exists for the given key.
func (*Context) GetQueryMap ¶
GetQueryMap returns a map for a given query key, plus a boolean value whether at least one value exists for the given key.
func (*Context) GetRawData ¶
GetRawData returns stream data.
func (*Context) GetStringMap ¶
GetStringMap returns the value associated with the key as a map of interfaces.
func (*Context) GetStringMapString ¶
GetStringMapString returns the value associated with the key as a map of strings.
func (*Context) GetStringMapStringSlice ¶
GetStringMapStringSlice returns the value associated with the key as a map to a slice of strings.
func (*Context) GetStringSlice ¶
GetStringSlice returns the value associated with the key as a slice of strings.
func (*Context) GetUint16 ¶
GetUint16 returns the value associated with the key as an unsigned integer 16.
func (*Context) GetUint16Slice ¶
GetUint16Slice returns the value associated with the key as a slice of uint16 integers.
func (*Context) GetUint32 ¶
GetUint32 returns the value associated with the key as an unsigned integer 32.
func (*Context) GetUint32Slice ¶
GetUint32Slice returns the value associated with the key as a slice of uint32 integers.
func (*Context) GetUint64 ¶
GetUint64 returns the value associated with the key as an unsigned integer 64.
func (*Context) GetUint64Slice ¶
GetUint64Slice returns the value associated with the key as a slice of uint64 integers.
func (*Context) GetUint8 ¶
GetUint8 returns the value associated with the key as an unsigned integer 8.
func (*Context) GetUint8Slice ¶
GetUint8Slice returns the value associated with the key as a slice of uint8 integers.
func (*Context) GetUintSlice ¶
GetUintSlice returns the value associated with the key as a slice of unsigned integers.
func (*Context) HTML ¶
HTML renders the HTTP template specified by its file name. It also updates the HTTP code and sets the Content-Type as "text/html". See http://golang.org/doc/articles/wiki/
func (*Context) HandlerName ¶
HandlerName returns the main handler's name. For example if the handler is "handleGetUsers()", this function will return "main.handleGetUsers".
func (*Context) HandlerNames ¶
HandlerNames returns a list of all registered handlers for this context in descending order, following the semantics of HandlerName()
func (*Context) Header ¶
Header is an intelligent shortcut for c.Writer.Header().Set(key, value). It writes a header in the response. If value == "", this method removes the header `c.Writer.Header().Del(key)`
func (*Context) IndentedJSON ¶
IndentedJSON serializes the given struct as pretty JSON (indented + endlines) into the response body. It also sets the Content-Type as "application/json". WARNING: we recommend using this only for development purposes since printing pretty JSON is more CPU and bandwidth consuming. Use Context.JSON() instead.
func (*Context) IsWebsocket ¶
IsWebsocket returns true if the request headers indicate that a websocket handshake is being initiated by the client.
func (*Context) JSON ¶
JSON serializes the given struct as JSON into the response body. It also sets the Content-Type as "application/json".
func (*Context) JSONP ¶
JSONP serializes the given struct as JSON into the response body. It adds padding to response body to request data from a server residing in a different domain than the client. It also sets the Content-Type as "application/javascript".
func (*Context) MultipartForm ¶
MultipartForm is the parsed multipart form, including file uploads.
func (*Context) MustBindWith ¶
MustBindWith binds the passed struct pointer using the specified binding engine. It will abort the request with HTTP 400 if any error occurs. See the binding package.
func (*Context) MustGet ¶
MustGet returns the value for the given key if it exists, otherwise it panics.
func (*Context) NegotiateFormat ¶
NegotiateFormat returns an acceptable Accept format.
func (*Context) Next ¶
func (c *Context) Next()
Next should be used only inside middleware. It executes the pending handlers in the chain inside the calling handler. See example in GitHub.
func (*Context) Param ¶
Param returns the value of the URL param. It is a shortcut for c.Params.ByName(key)
router.GET("/user/:id", func(c *gin.Context) { // a GET request to /user/john id := c.Param("id") // id == "john" // a GET request to /user/john/ id := c.Param("id") // id == "/john/" })
func (*Context) PostForm ¶
PostForm returns the specified key from a POST urlencoded form or multipart form when it exists, otherwise it returns an empty string `("")`. 通过表单提交的参数
func (*Context) PostFormArray ¶
PostFormArray returns a slice of strings for a given form key. The length of the slice depends on the number of params with the given key.
func (*Context) PostFormMap ¶
PostFormMap returns a map for a given form key.
func (*Context) PureJSON ¶
PureJSON serializes the given struct as JSON into the response body. PureJSON, unlike JSON, does not replace special html characters with their unicode entities.
func (*Context) Query ¶
Query returns the keyed url query value if it exists, otherwise it returns an empty string `("")`. It is shortcut for `c.Request.URL.Query().Get(key)`
GET /path?id=1234&name=Manu&value= c.Query("id") == "1234" c.Query("name") == "Manu" c.Query("value") == "" c.Query("wtf") == ""
通过get方式请求的参数
func (*Context) QueryArray ¶
QueryArray returns a slice of strings for a given query key. The length of the slice depends on the number of params with the given key.
func (*Context) Redirect ¶
Redirect returns an HTTP redirect to the specific location. code http.StatusMovedPermanently
func (*Context) RemoteIP ¶
RemoteIP parses the IP from Request.RemoteAddr, normalizes and returns the IP (without the port).
func (*Context) ResultAuto ¶
为了规范返回数据,封装一个统一的返回方法 err,成功返回status:0,data:扩展字段
func (*Context) SaveUploadedFile ¶
func (c *Context) SaveUploadedFile(file *multipart.FileHeader, dst string, perm ...fs.FileMode) error
SaveUploadedFile uploads the form file to specific dst.
func (*Context) SecureJSON ¶
SecureJSON serializes the given struct as Secure JSON into the response body. Default prepends "while(1)," to response body if the given struct is array values. It also sets the Content-Type as "application/json".
func (*Context) Set ¶
Set is used to store a new key/value pair exclusively for this context. It also lazy initializes c.Keys if it was not used previously.
func (*Context) SetAccepted ¶
SetAccepted sets Accept header data.
func (*Context) SetCookie ¶
func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)
SetCookie adds a Set-Cookie header to the ResponseWriter's headers. The provided cookie must have a valid Name. Invalid cookies may be silently dropped.
func (*Context) SetSameSite ¶
SetSameSite with cookie
func (*Context) ShouldBind ¶
ShouldBind checks the Method and Content-Type to select a binding engine automatically, Depending on the "Content-Type" header different bindings are used, for example:
"application/json" --> JSON binding "application/xml" --> XML binding
It parses the request's body as JSON if Content-Type == "application/json" using JSON or XML as a JSON input. It decodes the json payload into the struct specified as a pointer. Like c.Bind() but this method does not set the response status code to 400 or abort if input is not valid.
func (*Context) ShouldBindBodyWith ¶
func (c *Context) ShouldBindBodyWith(obj any, bb binding.BindingBody) (err error)
ShouldBindBodyWith is similar with ShouldBindWith, but it stores the request body into the context, and reuse when it is called again.
NOTE: This method reads the body before binding. So you should use ShouldBindWith for better performance if you need to call only once.
func (*Context) ShouldBindBodyWithJSON ¶
ShouldBindBodyWithJSON is a shortcut for c.ShouldBindBodyWith(obj, binding.JSON).
func (*Context) ShouldBindBodyWithPlain ¶
ShouldBindBodyWithPlain is a shortcut for c.ShouldBindBodyWith(obj, binding.Plain).
func (*Context) ShouldBindBodyWithTOML ¶
ShouldBindBodyWithTOML is a shortcut for c.ShouldBindBodyWith(obj, binding.TOML).
func (*Context) ShouldBindBodyWithXML ¶
ShouldBindBodyWithXML is a shortcut for c.ShouldBindBodyWith(obj, binding.XML).
func (*Context) ShouldBindBodyWithYAML ¶
ShouldBindBodyWithYAML is a shortcut for c.ShouldBindBodyWith(obj, binding.YAML).
func (*Context) ShouldBindHeader ¶
ShouldBindHeader is a shortcut for c.ShouldBindWith(obj, binding.Header).
func (*Context) ShouldBindJSON ¶
ShouldBindJSON is a shortcut for c.ShouldBindWith(obj, binding.JSON).
func (*Context) ShouldBindPlain ¶
ShouldBindPlain is a shortcut for c.ShouldBindWith(obj, binding.Plain).
func (*Context) ShouldBindQuery ¶
ShouldBindQuery is a shortcut for c.ShouldBindWith(obj, binding.Query).
func (*Context) ShouldBindTOML ¶
ShouldBindTOML is a shortcut for c.ShouldBindWith(obj, binding.TOML).
func (*Context) ShouldBindUri ¶
ShouldBindUri binds the passed struct pointer using the specified binding engine.
func (*Context) ShouldBindWith ¶
ShouldBindWith binds the passed struct pointer using the specified binding engine. See the binding package.
func (*Context) ShouldBindXML ¶
ShouldBindXML is a shortcut for c.ShouldBindWith(obj, binding.XML).
func (*Context) ShouldBindYAML ¶
ShouldBindYAML is a shortcut for c.ShouldBindWith(obj, binding.YAML).
func (*Context) Stream ¶
Stream sends a streaming response and returns a boolean indicates "Is client disconnected in middle of stream"
func (*Context) Upload ¶
func (c *Context) Upload(config *UploadConfig, callBack UploadCallBackFunStatus) (in *InMessage, out OutMessage, err error)
支持分页上传文件,先把文件上传到缓存空间,完全合并后,在上传到指定目录 提交的数据 chunk,chunks,uuid,name,file callBack 如果是分片上传,合并的时候采用异步回调
func (*Context) UploadFile ¶
func (c *Context) UploadFile(fileDir string, callBack UploadCallBackFunStatus) (err error)
直接上传单个文件 fileDir上传目录(必填),fileName上传文件名,为空是自动生成
func (*Context) Value ¶
Value returns the value associated with this context for key, or nil if no value is associated with key. Successive calls to Value with the same key returns the same result.
type ContextCallBackFunc ¶
type CookieSetting ¶
type CookieSetting struct { Path string // 限制二级目录访问,默认是全部 Domain string // 访问域名的地址 MaxAge int //单位秒,0:不设置最大有效时间,<0过期,>0设置最大秒失效,默认:2小时 Secure bool //标记为Secure 的Cookie只应通过被HTTPS协议加密过的请求发送给服务端。但即便设置了 Secure 标记,敏感信息也不应该通过Cookie传输,因为Cookie有其固有的不安全性 HttpOnly bool //为避免跨域脚本 (XSS) 攻击 设置true:客户端无法获取到,否则客户端可以获取 }
设置cookie的配置信息
type DataTransactions ¶
type DataTransactions struct { Sql string //执行的sql QueryList []interface{} //参数列表 }
数据事务,通过NewTable().
type DefaultSetting ¶
type DefaultSetting struct { Name string //程序名称 Path string //程序运行的目录,默认是当前程序的目录 HeaderSet *HeaderSetting //默认的头信息 CookieSet *CookieSetting //cookie的设置信息 SessionSet *SessionSetting //session的设置信息 LogSet *LogSetting //日志的设置信息 Captcha *CaptchaSetting //验证码的设置信息 Upload *UploadSetting //上传文件的设置信息 }
设置默认的统一配置
type Engine ¶
type Engine struct { Layout string //layout布局 RouterGroup // RedirectTrailingSlash enables automatic redirection if the current route can't be matched but a // handler for the path with (without) the trailing slash exists. // For example if /foo/ is requested but a route only exists for /foo, the // client is redirected to /foo with http status code 301 for GET requests // and 307 for all other request methods. RedirectTrailingSlash bool // RedirectFixedPath if enabled, the router tries to fix the current request path, if no // handle is registered for it. // First superfluous path elements like ../ or // are removed. // Afterwards the router does a case-insensitive lookup of the cleaned path. // If a handle can be found for this route, the router makes a redirection // to the corrected path with status code 301 for GET requests and 307 for // all other request methods. // For example /FOO and /..//Foo could be redirected to /foo. // RedirectTrailingSlash is independent of this option. RedirectFixedPath bool // HandleMethodNotAllowed if enabled, the router checks if another method is allowed for the // current route, if the current request can not be routed. // If this is the case, the request is answered with 'Method Not Allowed' // and HTTP status code 405. // If no other Method is allowed, the request is delegated to the NotFound // handler. HandleMethodNotAllowed bool // ForwardedByClientIP if enabled, client IP will be parsed from the request's headers that // match those stored at `(*gin.Engine).RemoteIPHeaders`. If no IP was // fetched, it falls back to the IP obtained from // `(*gin.Context).Request.RemoteAddr`. ForwardedByClientIP bool // AppEngine was deprecated. // Deprecated: USE `TrustedPlatform` WITH VALUE `gin.PlatformGoogleAppEngine` INSTEAD // #726 #755 If enabled, it will trust some headers starting with // 'X-AppEngine...' for better integration with that PaaS. AppEngine bool // UseRawPath if enabled, the url.RawPath will be used to find parameters. UseRawPath bool // UnescapePathValues if true, the path value will be unescaped. // If UseRawPath is false (by default), the UnescapePathValues effectively is true, // as url.Path gonna be used, which is already unescaped. UnescapePathValues bool // RemoveExtraSlash a parameter can be parsed from the URL even with extra slashes. // See the PR #1817 and issue #1644 RemoveExtraSlash bool // RemoteIPHeaders list of headers used to obtain the client IP when // `(*gin.Engine).ForwardedByClientIP` is `true` and // `(*gin.Context).Request.RemoteAddr` is matched by at least one of the // network origins of list defined by `(*gin.Engine).SetTrustedProxies()`. RemoteIPHeaders []string // TrustedPlatform if set to a constant of value gin.Platform*, trusts the headers set by // that platform, for example to determine the client IP TrustedPlatform string // MaxMultipartMemory value of 'maxMemory' param that is given to http.Request's ParseMultipartForm // method call. MaxMultipartMemory int64 // UseH2C enable h2c support. UseH2C bool // ContextWithFallback enable fallback Context.Deadline(), Context.Done(), Context.Err() and Context.Value() when Context.Request.Context() is not nil. ContextWithFallback bool HTMLRender render.HTMLRender FuncMap template.FuncMap ContextCallBack ContextCallBackFunc //全局的MVC回调 // contains filtered or unexported fields }
func Default ¶
func Default(opts ...OptionFunc) *Engine
Default returns an Engine instance with the Logger and Recovery middleware already attached.
func New ¶
func New(opts ...OptionFunc) *Engine
New returns a new blank Engine instance without any middleware attached. By default, the configuration is: - RedirectTrailingSlash: true - RedirectFixedPath: false - HandleMethodNotAllowed: false - ForwardedByClientIP: true - UseRawPath: false - UnescapePathValues: true
func (*Engine) HandleContext ¶
HandleContext re-enters a context that has been rewritten. This can be done by setting c.Request.URL.Path to your new target. Disclaimer: You can loop yourself to deal with this, use wisely.
func (*Engine) LoadHTMLFiles ¶
LoadHTMLFiles loads a slice of HTML files and associates the result with HTML renderer.
func (*Engine) LoadHTMLGlob ¶
LoadHTMLGlob loads HTML files identified by glob pattern and associates the result with HTML renderer.
func (*Engine) NoMethod ¶
func (engine *Engine) NoMethod(handlers ...HandlerFunc)
NoMethod sets the handlers called when Engine.HandleMethodNotAllowed = true.
func (*Engine) NoRoute ¶
func (engine *Engine) NoRoute(handlers ...HandlerFunc)
NoRoute adds handlers for NoRoute. It returns a 404 code by default.
func (*Engine) Routes ¶
func (engine *Engine) Routes() (routes RoutesInfo)
Routes returns a slice of registered routes, including some useful information, such as: the http method, path and the handler name.
func (*Engine) Run ¶
Run attaches the router to a http.Server and starts listening and serving HTTP requests. It is a shortcut for http.ListenAndServe(addr, router) Note: this method will block the calling goroutine indefinitely unless an error happens.
func (*Engine) RunFd ¶
RunFd attaches the router to a http.Server and starts listening and serving HTTP requests through the specified file descriptor. Note: this method will block the calling goroutine indefinitely unless an error happens.
func (*Engine) RunListener ¶
RunListener attaches the router to a http.Server and starts listening and serving HTTP requests through the specified net.Listener
func (*Engine) RunQUIC ¶
RunQUIC attaches the router to a http.Server and starts listening and serving QUIC requests. It is a shortcut for http3.ListenAndServeQUIC(addr, certFile, keyFile, router) Note: this method will block the calling goroutine indefinitely unless an error happens.
func (*Engine) RunTLS ¶
RunTLS attaches the router to a http.Server and starts listening and serving HTTPS (secure) requests. It is a shortcut for http.ListenAndServeTLS(addr, certFile, keyFile, router) Note: this method will block the calling goroutine indefinitely unless an error happens.
func (*Engine) RunUnix ¶
RunUnix attaches the router to a http.Server and starts listening and serving HTTP requests through the specified unix socket (i.e. a file). Note: this method will block the calling goroutine indefinitely unless an error happens.
func (*Engine) SecureJsonPrefix ¶
SecureJsonPrefix sets the secureJSONPrefix used in Context.SecureJSON.
func (*Engine) ServeHTTP ¶
func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request)
ServeHTTP conforms to the http.Handler interface.
func (*Engine) SetContextCallBack ¶
func (engine *Engine) SetContextCallBack(funs ContextCallBackFunc)
做全局的回调函数,在context中调用 在解析模板(使用out函数)会从这个地方回调全局参数
func (*Engine) SetFsTemplate ¶
设置layout,extension可以不设置,默认为.html
func (*Engine) SetFsTemplateDebug ¶
设置文件目录模板,用于调试模式
func (*Engine) SetFuncMap ¶
SetFuncMap sets the FuncMap used for template.FuncMap.
func (*Engine) SetHTMLTemplate ¶
SetHTMLTemplate associate a template with HTML renderer.
func (*Engine) SetTrustedProxies ¶
SetTrustedProxies set a list of network origins (IPv4 addresses, IPv4 CIDRs, IPv6 addresses or IPv6 CIDRs) from which to trust request's headers that contain alternative client IP when `(*gin.Engine).ForwardedByClientIP` is `true`. `TrustedProxies` feature is enabled by default, and it also trusts all proxies by default. If you want to disable this feature, use Engine.SetTrustedProxies(nil), then Context.ClientIP() will return the remote address directly.
func (*Engine) Use ¶
func (engine *Engine) Use(middleware ...HandlerFunc) IRoutes
Use attaches a global middleware to the router. i.e. the middleware attached through Use() will be included in the handlers chain for every single request. Even 404, 405, static files... For example, this is the right place for a logger or error management middleware.
func (*Engine) With ¶
func (engine *Engine) With(opts ...OptionFunc) *Engine
With returns a Engine with the configuration set in the OptionFunc.
type Error ¶
Error represents a error's specification.
func (*Error) MarshalJSON ¶
MarshalJSON implements the json.Marshaller interface.
type ErrorType ¶
type ErrorType uint64
ErrorType is an unsigned 64-bit error code as defined in the gin spec.
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 H ¶
H is a shortcut for map[string]any
func (H) MarshalXML ¶
MarshalXML allows type H to be used with xml.Marshal.
type HandlerFunc ¶
type HandlerFunc func(*Context)
HandlerFunc defines the handler used by gin middleware as return value.
func BasicAuth ¶
func BasicAuth(accounts Accounts) HandlerFunc
BasicAuth returns a Basic HTTP Authorization middleware. It takes as argument a map[string]string where the key is the user name and the value is the password.
func BasicAuthForProxy ¶
func BasicAuthForProxy(accounts Accounts, realm string) HandlerFunc
BasicAuthForProxy returns a Basic HTTP Proxy-Authorization middleware. If the realm is empty, "Proxy Authorization Required" will be used by default.
func BasicAuthForRealm ¶
func BasicAuthForRealm(accounts Accounts, realm string) HandlerFunc
BasicAuthForRealm returns a Basic HTTP Authorization middleware. It takes as arguments a map[string]string where the key is the user name and the value is the password, as well as the name of the Realm. If the realm is empty, "Authorization Required" will be used by default. (see http://tools.ietf.org/html/rfc2617#section-1.2)
func Bind ¶
func Bind(val any) HandlerFunc
Bind is a helper function for given interface object and returns a Gin middleware.
func CustomRecovery ¶
func CustomRecovery(handle RecoveryFunc) HandlerFunc
CustomRecovery returns a middleware that recovers from any panics and calls the provided handle func to handle it.
func CustomRecoveryWithWriter ¶
func CustomRecoveryWithWriter(out io.Writer, handle RecoveryFunc) HandlerFunc
CustomRecoveryWithWriter returns a middleware for a given writer that recovers from any panics and calls the provided handle func to handle it.
func ErrorLogger ¶
func ErrorLogger() HandlerFunc
ErrorLogger returns a HandlerFunc for any error type.
func ErrorLoggerT ¶
func ErrorLoggerT(typ ErrorType) HandlerFunc
ErrorLoggerT returns a HandlerFunc for a given error type.
func Logger ¶
func Logger() HandlerFunc
Logger instances a Logger middleware that will write the logs to gin.DefaultWriter. By default, gin.DefaultWriter = os.Stdout.
func LoggerWithConfig ¶
func LoggerWithConfig(conf LoggerConfig) HandlerFunc
LoggerWithConfig instance a Logger middleware with config.
func LoggerWithFormatter ¶
func LoggerWithFormatter(f LogFormatter) HandlerFunc
LoggerWithFormatter instance a Logger middleware with the specified log format function.
func LoggerWithWriter ¶
func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc
LoggerWithWriter instance a Logger middleware with the specified writer buffer. Example: os.Stdout, a file opened in write mode, a socket...
func Recovery ¶
func Recovery() HandlerFunc
Recovery returns a middleware that recovers from any panics and writes a 500 if there was one.
func RecoveryWithWriter ¶
func RecoveryWithWriter(out io.Writer, recovery ...RecoveryFunc) HandlerFunc
RecoveryWithWriter returns a middleware for a given writer that recovers from any panics and writes a 500 if there was one.
func WrapF ¶
func WrapF(f http.HandlerFunc) HandlerFunc
WrapF is a helper function for wrapping http.HandlerFunc and returns a Gin middleware.
func WrapH ¶
func WrapH(h http.Handler) HandlerFunc
WrapH is a helper function for wrapping http.Handler and returns a Gin middleware.
type HandlersChain ¶
type HandlersChain []HandlerFunc
HandlersChain defines a HandlerFunc slice.
func (HandlersChain) Last ¶
func (c HandlersChain) Last() HandlerFunc
Last returns the last handler in the chain. i.e. the last handler is the main one.
type HeaderSetting ¶
type HeaderSetting struct { Origin []string //默认的头信息 Access-Control-Allow-Origin:*(全部) ,指定地址:http://ip,多个需要用逗号隔开 Methods []string //默认的头信息 Access-Control-Allow-Methods:*(全部) ,指定方法:GET,POST,多个需要用逗号隔开 Headers []string //Content-Type AllowOriginFunc func(origin string) bool //自定义的头信息 Access-Control-Allow-Origin:*(全部) ,指定地址:http://ip,多个需要用逗号隔开 }
设置头文件
type IDb ¶
type IDb struct { IDbConf *IDbConfig IsDebug bool //是否开启调试模式 CDB *sql.DB //当前数据库链接对象 RDb []*sql.DB //读库 WDb []*sql.DB //写库 }
数据库操作对象
var Db *IDb
全局配置文件
type IDbConfig ¶
type IDbConfig struct { DriverName string //驱动名称 Prefix string //前缀 Dsn string //mysql的链接,不支持读写分离 WDsn string //写库的链接,支持读写分离 RDsn string //读库的链接,支持读写分离 IsShowSelectSql bool //是否显示sql语句,select IsShowOptionSql bool //是否回调操作sql语句,install,update,delete SqlOptionCallBack func(option, talenName, sql string, datalist []interface{}) //回调函数,option:操作add,edit,del,sql:sql语句,datalist:数据每个sql的回调操作 SqlErrorCallBack func(sql string, datalist []interface{}, option string, err error) //sql错误回调函数,sql:sql语句,datalist:数据每个sql的回调操作,option:操作提示,err错误信息 }
数据库配置文件
var DbConfig *IDbConfig
设置全局变量
type IRouter ¶
type IRouter interface { IRoutes Group(string, ...HandlerFunc) *RouterGroup }
IRouter defines all router handle interface includes single and group router.
type IRoutes ¶
type IRoutes interface { Use(...HandlerFunc) IRoutes Handle(string, string, ...HandlerFunc) IRoutes Any(string, ...HandlerFunc) IRoutes Auto(controller interface{}) IRoutes //实现结构体自动路由 GET(string, ...HandlerFunc) IRoutes POST(string, ...HandlerFunc) IRoutes DELETE(string, ...HandlerFunc) IRoutes PATCH(string, ...HandlerFunc) IRoutes PUT(string, ...HandlerFunc) IRoutes OPTIONS(string, ...HandlerFunc) IRoutes HEAD(string, ...HandlerFunc) IRoutes Match([]string, string, ...HandlerFunc) IRoutes StaticFile(string, string) IRoutes StaticFileFS(string, string, http.FileSystem) IRoutes Static(string, string) IRoutes StaticFS(string, http.FileSystem) IRoutes }
IRoutes defines all router handle interface.
type InMessage ¶
type InMessage struct { Finsh bool `json:"finsh"` //是否完成上传,如果是分片上传,则为false,否则为true Status bool `json:"status"` //true:成功,false:失败 Message string `json:"message"` //错误信息 Title string `json:"title"` //文件标题,带文件后缀 Path string `json:"path"` //相对路径,除去根路径的路径 ShowUrl string `json:"show_url"` //http访问的路径文件路径 Md5 string `json:"md5"` //文件MD5值 Size int64 `json:"size"` //文件大小 Ext string `json:"ext"` //文件后缀,不带. Name string `json:"name"` //文件名,不带后缀 }
上传是否成功的信息
type LogFormatter ¶
type LogFormatter func(params LogFormatterParams) string
LogFormatter gives the signature of the formatter function passed to LoggerWithFormatter
type LogFormatterParams ¶
type LogFormatterParams struct { Request *http.Request // TimeStamp shows the time after the server returns a response. TimeStamp time.Time // StatusCode is HTTP response code. StatusCode int // Latency is how much time the server cost to process a certain request. Latency time.Duration // ClientIP equals Context's ClientIP method. ClientIP string // Method is the HTTP method given to the request. Method string // Path is a path the client requests. Path string // ErrorMessage is set if error has occurred in processing the request. ErrorMessage string // BodySize is the size of the Response Body BodySize int // Keys are the keys set on the request's context. Keys map[string]any // contains filtered or unexported fields }
LogFormatterParams is the structure any formatter will be handed when time to log comes
func (*LogFormatterParams) IsOutputColor ¶
func (p *LogFormatterParams) IsOutputColor() bool
IsOutputColor indicates whether can colors be outputted to the log.
func (*LogFormatterParams) MethodColor ¶
func (p *LogFormatterParams) MethodColor() string
MethodColor is the ANSI color for appropriately logging http method to a terminal.
func (*LogFormatterParams) ResetColor ¶
func (p *LogFormatterParams) ResetColor() string
ResetColor resets all escape attributes.
func (*LogFormatterParams) StatusCodeColor ¶
func (p *LogFormatterParams) StatusCodeColor() string
StatusCodeColor is the ANSI color for appropriately logging http status code to a terminal.
type LogSetting ¶
type LogSetting struct { LogName string //写入日志的文件名称 LogPath string //写入日志的路径 默认是当前程序log_程序名称 MaxDay int64 //日志保留的天数 默认保留7天 }
日志的设置方式
type LoggerConfig ¶
type LoggerConfig struct { // Optional. Default value is gin.defaultLogFormatter Formatter LogFormatter // Output is a writer where logs are written. // Optional. Default value is gin.DefaultWriter. Output io.Writer // SkipPaths is an url path array which logs are not written. // Optional. SkipPaths []string // Skip is a Skipper that indicates which logs should not be written. // Optional. Skip Skipper }
LoggerConfig defines the config for Logger middleware.
type Negotiate ¶
type Negotiate struct { Offered []string HTMLName string HTMLData any JSONData any XMLData any YAMLData any Data any TOMLData any }
Negotiate contains all negotiations data.
type OnlyFilesFS ¶
type OnlyFilesFS struct {
FileSystem http.FileSystem
}
OnlyFilesFS implements an http.FileSystem without `Readdir` functionality.
type OptionFunc ¶
type OptionFunc func(*Engine)
OptionFunc defines the function to change the default configuration
type OutMessage ¶
type OutMessage struct { Result string `json:"result"` // ok:成功,failed:失败 Status bool `json:"status"` //true:成功,false:失败 Message string `json:"message"` //错误信息 Title string `json:"title"` //文件标题 Path string `json:"path"` //http访问的路径文件路径 }
返回到页面信息
type Params ¶
type Params []Param
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.
type RecoveryFunc ¶
RecoveryFunc defines the function passable to CustomRecovery.
type ResponseWriter ¶
type ResponseWriter interface { http.ResponseWriter http.Hijacker http.Flusher http.CloseNotifier // Status returns the HTTP response status code of the current request. Status() int // Size returns the number of bytes already written into the response http body. // See Written() Size() int // WriteString writes the string into the response body. WriteString(string) (int, error) // Written returns true if the response body was already written. Written() bool // WriteHeaderNow forces to write the http header (status code + headers). WriteHeaderNow() // Pusher get the http.Pusher for server push Pusher() http.Pusher }
ResponseWriter ...
type RouteInfo ¶
type RouteInfo struct { Method string Path string Handler string HandlerFunc HandlerFunc }
RouteInfo represents a request route's specification which contains method and path and its handler.
type RouterGroup ¶
type RouterGroup struct { Handlers HandlersChain // contains filtered or unexported fields }
RouterGroup is used internally to configure router, a RouterGroup is associated with a prefix and an array of handlers (middleware).
func (*RouterGroup) Any ¶
func (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc) IRoutes
Any registers a route that matches all the HTTP methods. GET, POST, PUT, PATCH, HEAD, OPTIONS, DELETE, CONNECT, TRACE.
func (*RouterGroup) Auto ¶
func (group *RouterGroup) Auto(controller interface{}) IRoutes
结构图方法,如果是get_,post_put_delete_等前缀的方法,会自动识别为对应的http方法 自动添加结构体,自动检查mvc的路径,用&controller{}
func (*RouterGroup) BasePath ¶
func (group *RouterGroup) BasePath() string
BasePath returns the base path of router group. For example, if v := router.Group("/rest/n/v1/api"), v.BasePath() is "/rest/n/v1/api".
func (*RouterGroup) DELETE ¶
func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) IRoutes
DELETE is a shortcut for router.Handle("DELETE", path, handlers).
func (*RouterGroup) GET ¶
func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) IRoutes
GET is a shortcut for router.Handle("GET", path, handlers).
func (*RouterGroup) Group ¶
func (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup
Group creates a new router group. You should add all the routes that have common middlewares or the same path prefix. For example, all the routes that use a common middleware for authorization could be grouped.
func (*RouterGroup) HEAD ¶
func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) IRoutes
HEAD is a shortcut for router.Handle("HEAD", path, handlers).
func (*RouterGroup) Handle ¶
func (group *RouterGroup) Handle(httpMethod, relativePath string, handlers ...HandlerFunc) IRoutes
Handle registers a new request handle and middleware with the given path and method. The last handler should be the real handler, the other ones should be middleware that can and should be shared among different routes. See the example code in GitHub.
For GET, POST, PUT, PATCH and DELETE requests the respective shortcut functions can be used.
This function is intended for bulk loading and to allow the usage of less frequently used, non-standardized or custom methods (e.g. for internal communication with a proxy).
func (*RouterGroup) Match ¶
func (group *RouterGroup) Match(methods []string, relativePath string, handlers ...HandlerFunc) IRoutes
Match registers a route that matches the specified methods that you declared.
func (*RouterGroup) OPTIONS ¶
func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) IRoutes
OPTIONS is a shortcut for router.Handle("OPTIONS", path, handlers).
func (*RouterGroup) PATCH ¶
func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) IRoutes
PATCH is a shortcut for router.Handle("PATCH", path, handlers).
func (*RouterGroup) POST ¶
func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes
POST is a shortcut for router.Handle("POST", path, handlers).
func (*RouterGroup) PUT ¶
func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) IRoutes
PUT is a shortcut for router.Handle("PUT", path, handlers).
func (*RouterGroup) Static ¶
func (group *RouterGroup) Static(relativePath, root string) IRoutes
Static serves files from the given file system root. Internally a http.FileServer is used, therefore http.NotFound is used instead of the Router's NotFound handler. To use the operating system's file system implementation, use :
router.Static("/static", "/var/www")
设置静态文件
func (*RouterGroup) StaticFS ¶
func (group *RouterGroup) StaticFS(relativePath string, fs http.FileSystem) IRoutes
StaticFS works just like `Static()` but a custom `http.FileSystem` can be used instead. Gin by default uses: gin.Dir()
func (*RouterGroup) StaticFile ¶
func (group *RouterGroup) StaticFile(relativePath, filepath string) IRoutes
StaticFile registers a single route in order to serve a single file of the local filesystem. router.StaticFile("favicon.ico", "./resources/favicon.ico")
func (*RouterGroup) StaticFileFS ¶
func (group *RouterGroup) StaticFileFS(relativePath, filepath string, fs http.FileSystem) IRoutes
StaticFileFS works just like `StaticFile` but a custom `http.FileSystem` can be used instead.. router.StaticFileFS("favicon.ico", "./resources/favicon.ico", Dir{".", false}) Gin by default uses: gin.Dir()
func (*RouterGroup) Use ¶
func (group *RouterGroup) Use(middleware ...HandlerFunc) IRoutes
Use adds middleware to the group, see example code in GitHub.
type SessionSetting ¶
type SessionSetting struct { Name string //session的名称,默认是GOSESSID MaxAge int //单位秒,默认3600小时 Path string //限制二级目录访问,默认是全部 Secure bool //标记为Secure 的Cookie只应通过被HTTPS协议加密过的请求发送给服务端。但即便设置了 Secure 标记,敏感信息也不应该通过Cookie传输,因为Cookie有其固有的 HttpOnly bool //为避免跨域脚本 (XSS) 攻击 设置true:客户端无法获取到,否则客户端可以获取 SameSite http.SameSite //1:默认,2:宽松模式,3:严格模式 Domain string //访问域名的地址 Store sessions.Store //设置cookie的存储方式,默认是内存存储 }
设置默认的session配置
type UploadCallBackFunStatus ¶
考虑到分片上传文件,在合并文件的时候,需要长时间占用时间,所以需要回调方式
type UploadConfig ¶
type UploadConfig struct { IsDirDate bool //是否按日期存储目录,默认是false Url string //http访问的前缀地址,比如:/upload 后面是文件名称 Path string //本地存储地址,比如 ./html/upload Size int64 // 0:限制,其他是字节 IsRepeat bool //是否允许重复上传,true:覆盖,false:不覆盖 Type string // 文件类型,支持多个,分割,比如:,apk,zip,image,video Ext string //文件后缀,支持多个,分割,比如:.jpg,.png }
上传文件的配置文件
type UploadFile ¶
type UploadFile struct { Config *UploadConfig TmpPath string //临时目录,用于存放分片上传的文件片段 UpCallBackFunStatus UploadCallBackFunStatus //分片上传文件合并时候的回调函数 }
操作上传文件
func NewUploadFile ¶
func NewUploadFile() *UploadFile
func (*UploadFile) GetFileExtension ¶
func (ths *UploadFile) GetFileExtension(filename string) string
得到文件后缀
func (*UploadFile) GetFileName ¶
func (ths *UploadFile) GetFileName(filename string) string
得到文件不带后缀的名称
func (*UploadFile) UploadSize ¶
func (ths *UploadFile) UploadSize(name string, file *multipart.FileHeader) (in *InMessage, out OutMessage, err error)
没有切片直接上传文件
func (*UploadFile) UploadSlice ¶
func (ths *UploadFile) UploadSlice(name, uuid string, chunk, chunks int, file *multipart.FileHeader) (in *InMessage, out OutMessage, err error)
saveDir:保存的目录 checkExit:检查文件是否存在 fileSize:大小限制 默认是10M
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
Package captcha implements generation and verification of image and audio CAPTCHAs.
|
Package captcha implements generation and verification of image and audio CAPTCHAs. |
capgensounds
generate is a tool to generate sounds.go from WAVE files.
|
generate is a tool to generate sounds.go from WAVE files. |
internal
|
|
Package service provides a simple way to create a system service.
|
Package service provides a simple way to create a system service. |
apkparser
Package apkparser parses AndroidManifest.xml and resources.arsc from Android APKs.
|
Package apkparser parses AndroidManifest.xml and resources.arsc from Android APKs. |
apkparser/flate
Package flate implements the DEFLATE compressed data format, described in RFC 1951.
|
Package flate implements the DEFLATE compressed data format, described in RFC 1951. |