Documentation ¶
Overview ¶
Package gin implements a HTTP web framework called gin.
See https:// 更多关于杜松子酒的信息
Index ¶
- Constants
- Variables
- func CreateTestContext(w http.ResponseWriter) (c *Context, r *Engine)
- func Dir(root string, listDirectory bool) http.FileSystem
- func DisableBindValidation()
- func DisableConsoleColor()
- func EnableJsonDecoderDisallowUnknownFields()
- func EnableJsonDecoderUseNumber()
- func ForceConsoleColor()
- func IsDebugging() bool
- func Mode() string
- func SetMode(value string)
- type Accounts
- 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) 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) error
- func (c *Context) BindXML(obj any) error
- func (c *Context) BindYAML(obj any) error
- 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) 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) GetFloat64(key string) (f64 float64)
- func (c *Context) GetHeader(key string) string
- func (c *Context) GetInt(key string) (i int)
- func (c *Context) GetInt64(key string) (i64 int64)
- 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) GetString(key string) (s string)
- func (c *Context) GetStringMap(key string) (sm map[string]any)
- func (c *Context) GetStringMapString(key string) (sms map[string]string)
- func (c *Context) GetStringMapStringSlice(key string) (smss map[string][]string)
- func (c *Context) GetStringSlice(key string) (ss []string)
- func (c *Context) GetTime(key string) (t time.Time)
- func (c *Context) GetUint(key string) (ui uint)
- func (c *Context) GetUint64(key string) (ui64 uint64)
- func (c *Context) HTML(code int, name string, obj any)
- func (c *Context) Handler() HandlerFunc
- func (c *Context) HandlerName() string
- func (c *Context) HandlerNames() []string
- func (c *Context) Header(key, value string)
- func (c *Context) IndentedJSON(code int, obj any)
- func (c *Context) IsAborted() 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) 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) 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) SSEvent(name string, message any)
- func (c *Context) SaveUploadedFile(file *multipart.FileHeader, dst string) 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) ShouldBind(obj any) error
- func (c *Context) ShouldBindBodyWith(obj any, bb binding.BindingBody) (err error)
- func (c *Context) ShouldBindHeader(obj any) error
- func (c *Context) ShouldBindJSON(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) Value(key any) any
- func (c *Context) XML(code int, obj any)
- func (c *Context) YAML(code int, obj any)
- 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) 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) 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
- type Error
- type ErrorType
- type H
- type HandlerFunc
- func BasicAuth(accounts Accounts) 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 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 WrapF(f http.HandlerFunc) HandlerFunc
- func WrapH(h http.Handler) HandlerFunc
- type HandlersChain
- type IRouter
- type IRoutes
- type LogFormatter
- type LogFormatterParams
- type LoggerConfig
- type Negotiate
- type Param
- type Params
- type RecoveryFunc
- type ResponseWriter
- type RouteInfo
- type RouterGroup
- func (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc) 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
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 MIMETOML = binding.MIMETOML )
内容类型MIME最常用的数据格式
const ( // 在Google应用引擎上运行时的平台googleappengine // 信任X-Appengine-Remote-Addr来确定客户端的IP PlatformGoogleAppEngine = "X-Appengine-Remote-Addr" // 使用Cloudflare的CDN时的平台Cloudflare // Trust CF-Connecting-IP用于确定客户端的IP PlatformCloudflare = "CF-Connecting-IP" )
信任的平台
const ( // DebugMode表示gin模式为debug DebugMode = "debug" // ReleaseMode表示gin模式为release ReleaseMode = "release" // TestMode表示gin模式为test TestMode = "test" )
const AuthUserKey = "user"
AuthUserKey是基本验证中用户凭据的cookie名称
const BindKey = "_gin-gonic/gin/bindkey"
BindKey默认绑定键
const BodyBytesKey = "_gin-gonic/gin/bodybyteskey"
BodyBytesKey默认的体字节键
const ContextKey = "_gin-gonic/gin/contextkey"
ContextKey是Context返回自身的键
const EnvGinMode = "GIN_MODE"
EnvGinMode为gin模式的环境名
const Version = "v1.9.1"
Version是当前gin框架的版本
Variables ¶
var DebugPrintRouteFunc func(httpMethod, absolutePath, handlerName string, nuHandlers int)
DebugPrintRouteFunc调试日志输出格式
DefaultErrorWriter是默认io Gin用来调试错误的写入器
defaultwwriter是默认的io Gin用于调试输出和中间件输出的写入器,如Logger()或Recovery() 请注意,Logger和Recovery都提供了自定义的方式来配置它们的输出 要在Windows中支持着色,请使用:import "github.com/mattn/go-colorable"杜松子酒 defaultwwriter = colorable.NewColorableStdout()
Functions ¶
func CreateTestContext ¶
func CreateTestContext(w http.ResponseWriter) (c *Context, r *Engine)
CreateTestContext为测试目的返回一个新的引擎和上下文
func Dir ¶
func Dir(root string, listDirectory bool) http.FileSystem
Dir返回一个http http.FileServer()可以使用的文件系统 它在router.Static()内部使用 如果listDirectory == true,那么它的工作方式与http.Dir()相同,否则它返回一个文件系统,阻止http.FileServer()列出目录文件
func EnableJsonDecoderDisallowUnknownFields ¶
func EnableJsonDecoderDisallowUnknownFields()
EnableJsonDecoderDisallowUnknownFields为绑定设置为true EnableDecoderDisallowUnknownFields调用JSON Decoder实例上的DisallowUnknownFields方法
func EnableJsonDecoderUseNumber ¶
func EnableJsonDecoderUseNumber()
EnableJsonDecoderUseNumber为绑定设置为true EnableDecoderUseNumber以调用JSON Decoder实例上的UseNumber方法
Types ¶
type Context ¶
type Context struct { Request *http.Request Writer ResponseWriter Params Params // Keys是每个请求上下文专用的键/值对 Keys map[string]any // Errors是附加到使用此上下文的所有处理程序/中间件的错误列表 Errors errorMsgs // Accepted定义了一个手动接受的格式列表,用于内容协商 Accepted []string // contains filtered or unexported fields }
环境是杜松子酒最重要的部分 例如,它允许我们在中间件之间传递变量、管理流、验证请求的JSON并呈现JSON响应
func CreateTestContextOnly ¶
func CreateTestContextOnly(w http.ResponseWriter, r *Engine) (c *Context)
CreateTestContextOnly返回基于引擎的新上下文,用于测试目的
func (*Context) Abort ¶
func (c *Context) Abort()
Abort防止调用挂起的处理程序 注意,这不会停止当前处理程序 假设您有一个授权中间件,用于验证当前请求是否已授权 如果授权失败(例如:密码不匹配),调用Abort以确保不调用此请求的其余处理程序
func (*Context) AbortWithError ¶
AbortWithError在内部调用`AbortWithStatus()`和`Error()` 此方法停止链,写入状态码并将指定的错误推入' c.Errors ' 有关详细信息,请参阅Context.Error()
func (*Context) AbortWithStatus ¶
AbortWithStatus调用`Abort()`并写入带有指定状态码的头文件 例如,验证请求失败时可以使用:context.AbortWithStatus(401)
func (*Context) AbortWithStatusJSON ¶
AbortWithStatusJSON调用' Abort() ',然后在内部调用' JSON ' 此方法停止链,编写状态代码并返回JSON主体 它还将Content-Type设置为“application/json”
func (*Context) AddParam ¶
AddParam将参数添加到上下文中,并用给定的值替换路径参数键,用于端到端测试 示例Route: "/user/:id"AddParam("id", 1) Result: "/user/1"
func (*Context) AsciiJSON ¶
AsciiJSON将给定的结构作为JSON序列化到响应体中,并使用unicode到ASCII字符串 它还将Content-Type设置为“application/json”
func (*Context) Bind ¶
Bind检查方法和内容类型以自动选择绑定引擎,具体取决于“内容类型” 头文件使用了不同的绑定,例如:"application/json"——比;JSON绑定"application/xml"——比;如果Content-Type == "application/ JSON "使用JSON或XML作为JSON输入 它将json有效负载解码为指定为指针的结构 它会写一个400的错误,并设置Content-Type header "text/plain"在响应中,如果输入无效
func (*Context) BindHeader ¶
BindHeader是c.MustBindWith(obj, binding.Header)的快捷方式
func (*Context) BindJSON ¶
BindJSON是c.MustBindWith(obj, binding.JSON)的快捷方式
func (*Context) BindQuery ¶
BindQuery是c.MustBindWith(obj, binding.Query)的快捷方式
func (*Context) BindTOML ¶
BindTOML是c.MustBindWith(obj, binding.TOML)的快捷方式
func (*Context) BindUri ¶
BindUri使用binding.Uri绑定传递的结构指针 如果发生任何错误,它将使用HTTP 400中止请求
func (*Context) BindWith ¶
BindWith使用指定的绑定引擎绑定传递的结构指针 参见绑定包
func (*Context) BindXML ¶
BindXML是c.MustBindWith(obj, binding.BindXML)的快捷方式
func (*Context) BindYAML ¶
BindYAML是c.MustBindWith(obj, binding.YAML)的快捷方式
func (*Context) ClientIP ¶
ClientIP实现了一个最佳努力算法来返回真实的客户端IP 它在底层调用c.RemoteIP()来检查远程IP是否是可信代理 如果是,它将尝试解析Engine中定义的标头 RemoteIPHeaders(缺省为[X-Forwarded-For, X-Real-Ip]) 如果报头在语法上无效或远程IP不对应于可信代理,则返回远程IP(来自Request.RemoteAddr)
func (*Context) Cookie ¶
Cookie返回请求中提供的命名Cookie,如果没有找到,则返回ErrNoCookie 并返回未转义的命名cookie 如果多个cookie与给定的名称匹配,则只返回一个cookie
func (*Context) Copy ¶
Copy返回当前上下文的副本,该副本可在请求作用域之外安全地使用 当必须将上下文传递给程序时,必须使用此方法
func (*Context) Data ¶
Data将一些数据写入主体流并更新HTTP代码
func (*Context) DataFromReader ¶
func (c *Context) DataFromReader(code int, contentLength int64, contentType string, reader io.Reader, extraHeaders map[string]string)
DataFromReader将指定的阅读器写入正文流并更新HTTP代码
func (*Context) Deadline ¶
当c.Request没有Context时,Deadline返回没有Deadline (ok==false)
func (*Context) DefaultPostForm ¶
DefaultPostForm从存在的POST url编码表单或多部分表单返回指定的键,否则返回指定的defaultValue字符串 参见:PostForm()和GetPostForm()了解更多信息
func (*Context) DefaultQuery ¶
如果存在,则返回键控url查询值,否则返回指定的defaultValue字符串 更多信息请参见:Query()和GetQuery() GET / ?name=姓名&lastname= c.DefaultQuery("name", "unknown") ==姓名"c.DefaultQuery("id", "none") == "none"c.DefaultQuery("lastname", "none") == "
func (*Context) Done ¶
func (c *Context) Done() <-chan struct{}
当c.Request没有上下文时,Done返回nil (chan将永远等待)
func (*Context) Error ¶
Error将错误附加到当前上下文 错误被推入错误列表 对解析请求期间发生的每个错误调用Error是一个好主意 中间件可用于收集所有错误并将它们一起推送到数据库、打印日志或将其附加到HTTP响应中 如果err为nil, Error将出现Panic
func (*Context) FileAttachment ¶
FileAttachment以一种有效的方式将指定的文件写入正文流 在客户端,文件通常会以给定的文件名下载
func (*Context) FileFromFS ¶
func (c *Context) FileFromFS(filepath string, fs http.FileSystem)
FileFromFS从http写入指定的文件 文件系统以一种有效的方式进入主体流
func (*Context) FormFile ¶
func (c *Context) FormFile(name string) (*multipart.FileHeader, error)
FormFile返回所提供表单键的第一个文件
func (*Context) FullPath ¶
FullPath返回匹配的路由完整路径 对于未找到的路由返回一个空字符串 router.GET("/user/:id", func(c *gin.Context) {c. fullpath () == "/user/:id"真正})
func (*Context) Get ¶
Get返回给定键的值,即:(value, true) 如果值不存在,则返回(nil, false)
func (*Context) GetDuration ¶
GetDuration以持续时间的形式返回与键相关的值
func (*Context) GetFloat64 ¶
GetFloat64返回与该键相关的值作为float64
func (*Context) GetPostForm ¶
GetPostForm类似于PostForm(key) 如果存在' (value, true) '(即使值是空字符串),则从POST url编码形式或多部分形式返回指定的键,否则返回("", false) 例如,在PATCH请求更新用户的电子邮件时:email=mail@example.com——>("mail@example.com", true):= GetPostForm("email")设置email为"mail@example.com"电子邮件 = --& gt;("", true):= GetPostForm("email")设置email为"——比;("", false):= GetPostForm(&q
func (*Context) GetPostFormArray ¶
GetPostFormArray返回给定表单键的字符串切片,以及是否至少存在一个给定键的布尔值
func (*Context) GetPostFormMap ¶
GetPostFormMap返回给定表单键的映射,以及一个布尔值,用于判断给定键是否至少存在一个值
func (*Context) GetQuery ¶
GetQuery类似于Query(),如果存在' (value, true) '(即使值是空字符串),它返回键控url查询值,否则它返回' ("", false) ' 它是' 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返回给定查询键的字符串切片,以及一个布尔值,用于判断给定键是否至少存在一个值
func (*Context) GetQueryMap ¶
GetQueryMap返回给定查询键的映射,加上一个布尔值,用于判断给定键是否至少存在一个值
func (*Context) GetString ¶
GetString以字符串的形式返回与键相关的值
func (*Context) GetStringMap ¶
GetStringMap以接口映射的形式返回与键相关的值
func (*Context) GetStringMapString ¶
GetStringMapString以字符串映射的形式返回与键相关的值
func (*Context) GetStringMapStringSlice ¶
GetStringMapStringSlice返回与键相关的值,作为到字符串切片的映射
func (*Context) GetStringSlice ¶
GetStringSlice以字符串切片的形式返回与键相关的值
func (*Context) GetUint64 ¶
GetUint64以无符号整数的形式返回与键相关的值
func (*Context) HTML ¶
HTML呈现由其文件名指定的HTTP模板 它还更新HTTP代码并将Content-Type设置为"text/html" 参见http://golang.org/doc/articles/wiki/
func (*Context) HandlerName ¶
HandlerName返回主处理程序的名称 例如,如果处理程序为“handleGetUsers()”,则此函数将返回“main.handleGetUsers”
func (*Context) HandlerNames ¶
HandlerNames按照HandlerName()的语义,按降序返回此上下文的所有已注册处理程序的列表
func (*Context) Header ¶
Header是c.Writer.Header()的智能快捷方式 集(关键字,值) 它在响应中写入一个标头 如果value == "",此方法将删除头' c.Writer.Header().Del(key) '
func (*Context) IndentedJSON ¶
indetedjson将给定的结构序列化为漂亮的JSON(缩进+ endlines)到响应体中 它还将Content-Type设置为“application/json” 警告:我们建议仅用于开发目的,因为打印漂亮的JSON会消耗更多的CPU和带宽 使用Context.JSON()代替
func (*Context) IsWebsocket ¶
如果请求头表明客户端正在发起websocket握手,IsWebsocket返回true
func (*Context) JSON ¶
JSON将给定的结构作为JSON序列化到响应体中 它还将Content-Type设置为“application/json”
func (*Context) JSONP ¶
JSONP将给定的结构作为JSON序列化到响应体中 它向响应体添加填充,以便从位于与客户端不同域的服务器请求数据 它还将Content-Type设置为"application/javascript"
func (*Context) MultipartForm ¶
MultipartForm是解析后的多部分表单,包括文件上传
func (*Context) MustBindWith ¶
MustBindWith使用指定的绑定引擎绑定传递的结构指针 如果发生任何错误,它将使用HTTP 400中止请求 参见绑定包
func (*Context) Negotiate ¶
根据可接受的Accept格式协商调用不同的Render
func (*Context) NegotiateFormat ¶
NegotiateFormat返回一个可接受的Accept格式
func (*Context) Param ¶
参数返回URL参数的值 它是c. param . byname (key) router.GET("/user/:id", func(c *gin.Context) {GET请求/user/john id:= c. param ("id") id == "/john"一个GET请求到/user/john/ id:= c.参数("id") id == "/john/"})
func (*Context) PostForm ¶
PostForm从存在的POST url编码表单或多部分表单返回指定的键,否则返回空字符串' ("") '
func (*Context) PostFormArray ¶
PostFormArray返回给定表单键的字符串切片 切片的长度取决于具有给定键的参数的数量
func (*Context) PostFormMap ¶
PostFormMap返回给定表单键的映射
func (*Context) ProtoBuf ¶
ProtoBuf将给定的结构体作为ProtoBuf序列化到响应体中
func (*Context) PureJSON ¶
PureJSON将给定的结构作为JSON序列化到响应体中 与JSON不同的是,PureJSON不会用它们的unicode实体替换特殊的html字符
func (*Context) Query ¶
Query如果存在则返回键控url查询值,否则返回空字符串' ("") ' 这是快捷方式的' c.Request.URL.Query().Get(key) ' GET /path?id=1234&name= manual &value= c.Query("id") == "1234"c.Query("name") == " manual "c.Query("value") == "c.查询("wtf") == ";
func (*Context) QueryArray ¶
QueryArray返回给定查询键的字符串切片 切片的长度取决于具有给定键的参数的数量
func (*Context) QueryMap ¶
QueryMap返回给定查询键的映射
func (*Context) Redirect ¶
Redirect返回到特定位置的HTTP重定向
func (*Context) RemoteIP ¶
RemoteIP解析来自Request的IP RemoteAddr,规范化并返回IP(不带端口)
func (*Context) Render ¶
Render写入响应头并调用Render 渲染到渲染数据
func (*Context) SaveUploadedFile ¶
func (c *Context) SaveUploadedFile(file *multipart.FileHeader, dst string) error
SaveUploadedFile上传表单文件到指定的dst
func (*Context) SecureJSON ¶
SecureJSON将给定的结构作为安全JSON序列化到响应体中 Default前面加上"while(1),"如果给定的结构体是数组值,则返回响应体 它还将Content-Type设置为“application/json”
func (*Context) Set ¶
Set用于存储专门用于此上下文的新键/值对 如果以前没有使用c.Keys,它也会延迟初始化它
func (*Context) SetCookie ¶
func (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool)
SetCookie在ResponseWriter的报头中添加一个Set-Cookie报头 提供的cookie必须有一个有效的Name 无效的cookie可能会被静默删除
func (*Context) SetSameSite ¶
SetSameSite with cookie
func (*Context) ShouldBind ¶
shoulbind检查方法和内容类型,根据“内容类型”自动选择绑定引擎 头文件使用了不同的绑定,例如:"application/json"——比;JSON绑定"application/xml"——比;如果Content-Type == "application/ JSON "使用JSON或XML作为JSON输入 它将json有效负载解码为指定为指针的结构 与c.Bind()类似,但此方法不会将响应状态码设置为400,也不会在输入无效时中止
func (*Context) ShouldBindBodyWith ¶
func (c *Context) ShouldBindBodyWith(obj any, bb binding.BindingBody) (err error)
ShouldBindBodyWith与ShouldBindWith类似,但它将请求体存储到上下文中,并在再次调用时重用 注意:此方法在绑定前读取主体 因此,如果只需要调用一次,应该使用ShouldBindWith以获得更好的性能
func (*Context) ShouldBindHeader ¶
ShouldBindHeader是c.ShouldBindWith(obj, binding.Header)的快捷方式
func (*Context) ShouldBindJSON ¶
ShouldBindJSON是c.ShouldBindWith(obj, binding.JSON)的快捷方式
func (*Context) ShouldBindQuery ¶
ShouldBindQuery是c.ShouldBindWith(obj, binding.Query)的快捷方式
func (*Context) ShouldBindTOML ¶
ShouldBindTOML是c.ShouldBindWith(obj, binding.TOML)的快捷方式
func (*Context) ShouldBindUri ¶
ShouldBindUri使用指定的绑定引擎绑定传递的结构指针
func (*Context) ShouldBindWith ¶
ShouldBindWith使用指定的绑定引擎绑定传递的结构指针 参见绑定包
func (*Context) ShouldBindXML ¶
ShouldBindXML是c.ShouldBindWith(obj, binding.XML)的快捷方式
func (*Context) ShouldBindYAML ¶
ShouldBindYAML是c.ShouldBindWith(obj, binding.YAML)的快捷方式
func (*Context) Stream ¶
流发送一个流响应并返回一个布尔值,表示“客户端在流的中间断开了连接”;
func (*Context) String ¶
String将给定的字符串写入响应体
func (*Context) Value ¶
Value为key返回与此上下文关联的值,如果没有值与key关联,则返回nil 连续调用具有相同键的Value返回相同的结果
func (*Context) XML ¶
XML将给定的结构作为XML序列化到响应体中 它还将Content-Type设置为“application/xml”
type Engine ¶
type Engine struct { RouterGroup // RedirectTrailingSlash在当前路由不能匹配的情况下启用自动重定向,但是存在一个带有(不带有)尾斜杠的路径处理程序 // 例如,如果请求/foo/,但只存在/foo的路由,则客户端被重定向到/foo, GET请求的http状态码为301,所有其他请求方法的http状态码为307 RedirectTrailingSlash bool // RedirectFixedPath如果启用,如果没有为它注册句柄,路由器会尝试修复当前的请求路径 // 首先是多余的路径元素,比如…/或被移除 // 之后,路由器会对清理后的路径进行不区分大小写的查找 // 如果能找到该路由的句柄,路由器就会重定向到正确的路径,GET请求的状态码为301,其他所有请求方法的状态码为307 // 例如/FOO和/..Foo可以重定向到/ Foo // RedirectTrailingSlash与此选项无关 RedirectFixedPath bool // handlemethodnotalallowed如果使能,如果当前请求不能被路由,则路由器检查当前路由是否允许另一个方法 // 如果是这种情况,请求将返回“方法不允许”和HTTP状态码405 // 如果不允许使用其他方法,则将请求委托给NotFound处理程序 HandleMethodNotAllowed bool // 如果启用了ForwardedByClientIP,客户端IP将从与存储在' (*gin.Engine). remoteipheaders '匹配的请求头中解析 // 如果没有获取到IP,则返回到从' (*gin.Context). request . remoteaddr '获取的IP ForwardedByClientIP bool // AppEngine已弃用 // 已弃用:使用' TrustedPlatform ' WITH VALUE ' gin // 如果启用,它将信任一些以“X-AppEngine…”开头的标头 // 以便与该PaaS更好地集成 AppEngine bool // UseRawPath如果启用,则为url // RawPath将用于查找参数 UseRawPath bool // UnescapePathValues如果为true,则不转义路径值 // 如果UseRawPath为false(默认情况下),UnescapePathValues有效地为true,如url // 路径将被使用,它已经是未转义的 UnescapePathValues bool // 即使使用额外的斜杠,也可以从URL解析RemoveExtraSlash参数 // 见PR #1817和issue #1644 RemoveExtraSlash bool // RemoteIPHeaders获取客户端IP时使用的报头列表(*gin.Engine) // ForwardedByClientIP '是' true '和' (*gin.Context). request // RemoteAddr '被' (*gin.Engine). settrustedproxies() '定义的列表的至少一个网络源匹配 RemoteIPHeaders []string // TrustedPlatform设置为一个值为gin的常量 // 例如,平台*信任由该平台设置的报头来确定客户端IP TrustedPlatform string // 给http的“maxMemory”参数的MaxMultipartMemory值请求的parsemmultipartform方法调用 MaxMultipartMemory int64 // 启用h2c支持 UseH2C bool // 当Context.Request.Context()不是nil时,启用回退Context.Deadline()、Context.Done()、Context.Err()和Context.Value() ContextWithFallback bool HTMLRender render.HTMLRender FuncMap template.FuncMap // contains filtered or unexported fields }
引擎是框架的实例,它包含了复用器、中间件和配置设置 使用New()或Default()创建Engine实例
func New ¶
func New() *Engine
New返回一个新的空白Engine实例,没有附加任何中间件 默认配置为:—RedirectTrailingSlash: true—RedirectFixedPath: false—handlemethodnotalallowed: false—ForwardedByClientIP: true—UseRawPath: false—UnescapePathValues: true
func (*Engine) Delims ¶
Delims设置模板的左和右分隔符并返回Engine实例
func (*Engine) HandleContext ¶
HandleContext重新进入一个已经重写的上下文 这可以通过将c.Request.URL.Path设置为新目标来实现 免责声明:你可以循环自己来处理这个问题,明智地使用
func (*Engine) LoadHTMLFiles ¶
LoadHTMLFiles加载一段HTML文件,并将结果与HTML渲染器相关联
func (*Engine) LoadHTMLGlob ¶
LoadHTMLGlob加载由glob模式标识的HTML文件,并将结果与HTML渲染器相关联
func (*Engine) NoMethod ¶
func (engine *Engine) NoMethod(handlers ...HandlerFunc)
NoMethod设置引擎时调用的处理程序 handlemethodnotalallowed = true
func (*Engine) NoRoute ¶
func (engine *Engine) NoRoute(handlers ...HandlerFunc)
NoRoute为NoRoute添加处理程序 默认情况下,它返回404代码
func (*Engine) Routes ¶
func (engine *Engine) Routes() (routes RoutesInfo)
Routes返回已注册路由的切片,其中包括一些有用的信息,例如:http方法、路径和处理程序名称
func (*Engine) Run ¶
Run将路由器附加到http上 服务器并开始监听和服务HTTP请求 它是http的快捷方式 注意:除非发生错误,否则此方法将无限期地阻塞调用例程
func (*Engine) RunFd ¶
RunFd将路由器附加到http 服务器并通过指定的文件描述符开始侦听和服务HTTP请求 注意:除非发生错误,否则此方法将无限期地阻塞调用例程
func (*Engine) RunListener ¶
RunListener将路由器附加到http 服务器并开始通过指定的网络侦听和服务HTTP请求 侦听器
func (*Engine) RunTLS ¶
RunTLS将路由器附加到http 服务器并开始监听和服务HTTPS(安全)请求 它是http的快捷方式 注意:除非发生错误,否则此方法将无限期地阻塞调用例程
func (*Engine) RunUnix ¶
RunUnix将路由器附加到http 服务器并通过指定的unix套接字(即文件)开始侦听和服务HTTP请求 注意:除非发生错误,否则此方法将无限期地阻塞调用例程
func (*Engine) SecureJsonPrefix ¶
SecureJsonPrefix设置Context.SecureJSON中使用的SecureJsonPrefix
func (*Engine) ServeHTTP ¶
func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request)
ServeHTTP符合http 处理程序接口
func (*Engine) SetFuncMap ¶
SetFuncMap设置用于template.FuncMap的FuncMap
func (*Engine) SetHTMLTemplate ¶
SetHTMLTemplate将模板与HTML渲染器关联
func (*Engine) SetTrustedProxies ¶
SetTrustedProxies设置了一个网络起源列表(IPv4地址,IPv4 cidr, IPv6地址或IPv6 cidr),从其中信任请求的头包含替代客户端IP时' (* gin.com engine) ForwardedByClientIP '为' true ' ' TrustedProxies '功能是默认启用的,它也默认信任所有代理 如果您想禁用此功能,请使用Engine.SetTrustedProxies(nil),然后Context.ClientIP()将直接返回远程地址
func (*Engine) Use ¶
func (engine *Engine) Use(middleware ...HandlerFunc) IRoutes
Use将全局中间件附加到路由器上 也就是说,通过Use()附加的中间件将被包含在每个请求的处理程序链中 甚至404、405、静态文件……例如,这是日志记录器或错误管理中间件的正确位置
type ErrorType ¶
type ErrorType uint64
ErrorType是在gin规范中定义的无符号64位错误代码
const ( // 当Context.Bind()失败时使用ErrorTypeBind ErrorTypeBind ErrorType = 1 << 63 // 当Context.Render()失败时使用ErrorTypeRender ErrorTypeRender ErrorType = 1 << 62 // ErrorTypePrivate私有错误 ErrorTypePrivate ErrorType = 1 << 0 // ErrorTypePublic表示公共错误 ErrorTypePublic ErrorType = 1 << 1 // ErrorTypeAny表示任何其他错误 ErrorTypeAny ErrorType = 1<<64 - 1 // ErrorTypeNu表示任何其他错误 ErrorTypeNu = 2 )
type H ¶
H是map[string]any的快捷方式
type HandlerFunc ¶
type HandlerFunc func(*Context)
HandlerFunc定义了gin中间件使用的处理程序作为返回值
func BasicAuth ¶
func BasicAuth(accounts Accounts) HandlerFunc
BasicAuth返回一个基本HTTP授权中间件 它接受一个map[string]字符串作为参数,其中键是用户名,值是密码
func BasicAuthForRealm ¶
func BasicAuthForRealm(accounts Accounts, realm string) HandlerFunc
BasicAuthForRealm返回一个基本HTTP授权中间件 它接受一个map[string]字符串作为参数,其中键是用户名,值是密码,以及Realm的名称 如果领域为空,则“授权需要”;将默认使用 (见http://tools.ietf.org/html/rfc2617 - 1.2节)
func CustomRecovery ¶
func CustomRecovery(handle RecoveryFunc) HandlerFunc
CustomRecovery返回一个中间件,它可以从任何Panic中恢复,并调用提供的handle函数来处理它
func CustomRecoveryWithWriter ¶
func CustomRecoveryWithWriter(out io.Writer, handle RecoveryFunc) HandlerFunc
CustomRecoveryWithWriter为给定的编写器返回一个中间件,该编写器可以从任何Panic中恢复,并调用提供的handle函数来处理它
func Logger ¶
func Logger() HandlerFunc
Logger实例化一个Logger中间件,它将把日志写入gin. defaultwwriter 缺省为gin defaultwwriter = os.Stdout
func LoggerWithConfig ¶
func LoggerWithConfig(conf LoggerConfig) HandlerFunc
LoggerWithConfig实例是一个带有config的Logger中间件
func LoggerWithFormatter ¶
func LoggerWithFormatter(f LogFormatter) HandlerFunc
LoggerWithFormatter实例:一个具有指定日志格式功能的Logger中间件
func LoggerWithWriter ¶
func LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc
LoggerWithWriter实例:一个具有指定写入器缓冲区的Logger中间件 例如:操作系统 标准输出,以写模式打开的文件,套接字…
func RecoveryWithWriter ¶
func RecoveryWithWriter(out io.Writer, recovery ...RecoveryFunc) HandlerFunc
RecoveryWithWriter为给定的写入器返回一个中间件,该写入器可以从任何Panic中恢复并写入500(如果有的话)
type HandlersChain ¶
type HandlersChain []HandlerFunc
HandlersChain定义了一个handlerfuncc片
func (HandlersChain) Last ¶
func (c HandlersChain) Last() HandlerFunc
Last返回链中的最后一个处理程序 也就是说,最后一个处理器是主处理器
type IRouter ¶
type IRouter interface { IRoutes Group(string, ...HandlerFunc) *RouterGroup }
IRouter定义了所有路由器句柄接口,包括单个和组路由器
type IRoutes ¶
type IRoutes interface { Use(...HandlerFunc) IRoutes Handle(string, string, ...HandlerFunc) IRoutes Any(string, ...HandlerFunc) 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 }
irroutes定义了所有路由器句柄接口
type LogFormatter ¶
type LogFormatter func(params LogFormatterParams) string
LogFormatter给出传递给LoggerWithFormatter的formatter函数的签名
type LogFormatterParams ¶
type LogFormatterParams struct { Request *http.Request // TimeStamp显示服务器返回响应后的时间 TimeStamp time.Time // StatusCode是HTTP响应码 StatusCode int // 延迟是服务器处理某个请求所需的时间 Latency time.Duration // ClientIP等于Context的ClientIP方法 ClientIP string // 方法是给定给请求的HTTP方法 Method string // Path是客户端请求的路径 Path string // 如果在处理请求时发生错误,则设置ErrorMessage ErrorMessage string // BodySize是响应体的大小 BodySize int // 键是在请求的上下文中设置的键 Keys map[string]any // contains filtered or unexported fields }
LogFormatterParams是任何格式化程序在需要进行日志记录时要传递的结构
func (*LogFormatterParams) IsOutputColor ¶
func (p *LogFormatterParams) IsOutputColor() bool
IsOutputColor是否可以输出颜色到日志中
func (*LogFormatterParams) MethodColor ¶
func (p *LogFormatterParams) MethodColor() string
MethodColor是用于将http方法适当地记录到终端的ANSI颜色
func (*LogFormatterParams) ResetColor ¶
func (p *LogFormatterParams) ResetColor() string
ResetColor重置所有转义属性
func (*LogFormatterParams) StatusCodeColor ¶
func (p *LogFormatterParams) StatusCodeColor() string
StatusCodeColor是用于将http状态码适当地记录到终端的ANSI颜色
type LoggerConfig ¶
type LoggerConfig struct { // 可选的 // 默认值为gin.defaultLogFormatter Formatter LogFormatter // Output是写入日志的写入器 // 可选的 // 默认值为gin. defaultwwriter Output io.Writer // skipppaths是一个url路径数组,不写入日志 // 可选的 SkipPaths []string }
LoggerConfig定义了Logger中间件的配置
type Negotiate ¶
type Negotiate struct { Offered []string HTMLName string HTMLData any JSONData any XMLData any YAMLData any Data any TOMLData any }
Negotiate包含所有谈判数据
type Params ¶
type Params []Param
Params是一个Param-slice,由路由器返回 片是有序的,第一个URL参数也是第一个片值 因此,通过索引读取值是安全的
func (Params) ByName ¶
ByName返回与给定名称匹配的第一个参数的值 如果没有找到匹配的Param,则返回一个空字符串
type RecoveryFunc ¶
recoveryfunction定义了CustomRecovery可传递的函数
type ResponseWriter ¶
type ResponseWriter interface { http.ResponseWriter http.Hijacker http.Flusher http.CloseNotifier // Status返回当前请求的HTTP响应状态码 Status() int // Size返回已经写入响应http主体的字节数 // 看到写() Size() int // WriteString将字符串写入响应体 WriteString(string) (int, error) // 如果响应体已经写好,则write返回true Written() bool // WriteHeaderNow强制写入http报头(状态码+报头) WriteHeaderNow() // push获取http // 用于服务器推送的push Pusher() http.Pusher }
ResponseWriter……
type RouteInfo ¶
type RouteInfo struct { Method string Path string Handler string HandlerFunc HandlerFunc }
RouteInfo表示一个请求路由的规范,它包含方法、路径和它的处理器
type RouterGroup ¶
type RouterGroup struct { Handlers HandlersChain // contains filtered or unexported fields }
RouterGroup在内部用于配置路由器,它与一个前缀和一组处理程序(中间件)相关联
func (*RouterGroup) Any ¶
func (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc) IRoutes
Any注册了一个匹配所有HTTP方法的路由 Get, post, put, patch, head, options, delete, connect, trace
func (*RouterGroup) BasePath ¶
func (group *RouterGroup) BasePath() string
BasePath返回路由器组的基路径 例如:v:= router.Group("/rest/n/v1/api"),则v. basepath()为"/rest/n/v1/api"
func (*RouterGroup) DELETE ¶
func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) IRoutes
DELETE是router.Handle("DELETE", path, handlers)的快捷方式
func (*RouterGroup) GET ¶
func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) IRoutes
GET是router.Handle("GET" path, handlers)的快捷方式
func (*RouterGroup) Group ¶
func (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup
Group命令用于创建新的路由器组 您应该添加所有具有相同中间件或相同路径前缀的路由 例如,可以对使用公共中间件进行授权的所有路由进行分组
func (*RouterGroup) HEAD ¶
func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) IRoutes
HEAD是router.Handle("HEAD" path, handlers)的快捷方式
func (*RouterGroup) Handle ¶
func (group *RouterGroup) Handle(httpMethod, relativePath string, handlers ...HandlerFunc) IRoutes
Handle用给定的路径和方法注册一个新的请求句柄和中间件 最后一个处理程序应该是真正的处理程序,其他的应该是中间件,可以并且应该在不同的路由之间共享 参见GitHub中的示例代码 对于GET、POST、PUT、PATCH和DELETE请求,可以使用各自的快捷函数 此功能用于批量加载,并允许使用不太常用的非标准化或自定义方法(例如用于与代理的内部通信)
func (*RouterGroup) Match ¶
func (group *RouterGroup) Match(methods []string, relativePath string, handlers ...HandlerFunc) IRoutes
Match注册一个与你声明的指定方法匹配的路由
func (*RouterGroup) OPTIONS ¶
func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) IRoutes
OPTIONS是router.Handle("OPTIONS" path, handlers)的快捷方式
func (*RouterGroup) PATCH ¶
func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) IRoutes
PATCH是router.Handle("PATCH" path, handlers)的快捷方式
func (*RouterGroup) POST ¶
func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes
POST是router.Handle("POST" path, handlers)的快捷方式
func (*RouterGroup) PUT ¶
func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) IRoutes
PUT是router.Handle("PUT" path, handlers)的快捷方式
func (*RouterGroup) Static ¶
func (group *RouterGroup) Static(relativePath, root string) IRoutes
静态从给定的文件系统根目录提供文件 内部http 使用的是FileServer,因此是http 使用NotFound来代替路由器的NotFound处理程序 要使用操作系统的文件系统实现,使用:router.Static("/static", "/var/www")
func (*RouterGroup) StaticFS ¶
func (group *RouterGroup) StaticFS(relativePath string, fs http.FileSystem) IRoutes
StaticFS的工作原理就像' Static() ',但一个自定义的' http 可以使用FileSystem’代替 Gin默认使用:Gin . dir ()
func (*RouterGroup) StaticFile ¶
func (group *RouterGroup) StaticFile(relativePath, filepath string) IRoutes
为了服务本地文件系统的单个文件,StaticFile注册单个路由 router.StaticFile(“favicon.ico"“ /资源/ favicon.ico")
func (*RouterGroup) StaticFileFS ¶
func (group *RouterGroup) StaticFileFS(relativePath, filepath string, fs http.FileSystem) IRoutes
StaticFileFS的工作原理就像' StaticFile ',但一个自定义的' http 可以用FileSystem代替 router. staticfiles ("favicon.ico", " /resources/favicon.ico", Dir{".", false}) Gin默认使用:Gin .Dir()
func (*RouterGroup) Use ¶
func (group *RouterGroup) Use(middleware ...HandlerFunc) IRoutes
使用将中间件添加到组中,参见GitHub中的示例代码
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
examples
|
|
gin-contrib
|
|
opengintracing
Package opengintracing provides requests tracing functional using opentracing specification.
|
Package opengintracing provides requests tracing functional using opentracing specification. |
zap
Package ginzap provides log handling using zap package.
|
Package ginzap provides log handling using zap package. |
internal
|
|