- All the pseudocode below assumes ctx have these types:
func handler(ctx *gin.Context){..}
->
func handler(
c context.Context
ctx *app.RequestContext
){..}
-
ctx.Cookie -> ctx.Cookie
-
ctx.SetCookie -> ctx.SetCookie
-
ctx.SetSameSite -> use ctx.SetCookie directly
-
ctx.RemoteIP -> net.SplitHostPort(strings.TrimSpace(ctx.RemoteAddr().String()))
-
ctx.Stream -> use ctx.SetBodyStream
-
Request header iteration
// gin:
for key := range c.Request.Header {
value := c.Request.Header.Get(key)
c.Set(key, value)
}
// hertz:
c.Request.Header.VisitAll(
func(k, v []byte) {
key := string(k)
value := string(v)
c.Set(key, value)
})
- request query args iteration
// gin:
for k, v := range c.Request.URL.Query() {
if len(v) > 0 {
req.data[k] = v[0]
}
}
// hertz:
c.Request.URI().QueryArgs().VisitAll(func(k, v []byte) {
strK := string(k)
if _, ok := req.data[strK]; !ok {
req.data[strK] = string(v)
}
})
- request post args iteration
// gin:
if c.Request.ParseForm() != nil {
for k, v := range c.Request.PostForm {
if len(v) > 0 {
req.data[k] = v[0]
}
}
}
// hertz:
c.Request.PostArgs().VisitAll(func(k, v []byte) {
strK := string(k)
if _, ok := req.data[strK]; !ok {
req.data[strK] = string(v)
}
})
-
ctx.AddParam
-
ctx.AsciiJSON
-
ctx.BindHeader
-
ctx.BindJSON
-
ctx.BindQuery
-
ctx.BindTOML
-
ctx.BindUri
-
ctx.BindWith
-
ctx.BindXML
-
ctx.BindYAML
-
ctx.DataFromReader
-
ctx.GetPostFormArray
-
ctx.GetPostFormMap
-
ctx.GetQueryArray
-
ctx.GetQueryMap
-
ctx.IsWebsocket
-
ctx.JSONP
-
ctx.MustBindWith
-
ctx.Negotiate
-
ctx.NegotiateFormat
-
ctx.PostFormArray
-
ctx.PostFormMap
-
ctx.QueryArray
-
ctx.QueryMap
-
ctx.SSEvent
-
ctx.SecureJSON
-
ctx.SetAccepted
-
ctx.ShouldBind
-
ctx.ShouldBindBodyWith
-
ctx.ShouldBindHeader
-
ctx.ShouldBindJSON
-
ctx.ShouldBindQuery
-
ctx.ShouldBindTOML
-
ctx.ShouldBindUri
-
ctx.ShouldBindWith
-
ctx.ShouldBindXML
-
ctx.ShouldBindYAML
-
ctx.TOML
-
ctx.YAML
-
r.Method -> r.Method & r.SetMethod
-
r.URL -> r.URL
-
r.Proto -> r.Header.GetProtocol
-
r.Header -> r.Header
-
r.Body -> r.BodyStream & r.SetBodyStream
-
r.ContentLength -> r.Header.ContentLength
-
r.Close -> r.Header.ConnectionClose & r.Header.SetConnectionClose
-
r.Host -> r.Header.Host
-
r.Form -> r.URL().QueryArgs & r.PostArgs
-
r.MultipartForm -> r.MultipartForm
-
r.RemoteAddr -> r.RemoteAddr
-
r.RequestURI -> r.Header.RequestURI & r.SetRequestURI
-
r.AddCookie -> r.SetCookie
-
r.Cookie -> r.Header.Cookie
-
r.UserAgent -> r.Header.UserAgent
-
ctx.Abort -> ctx.Abort
-
ctx.AbortWithError -> ctx.AbortWithError
-
ctx.AbortWithStatus -> ctx.AbortWithStatus
-
ctx.AbortWithStatusJSON -> ctx.AbortWithStatusJSON
-
ctx.Bind -> ctx.Bind
-
ctx.ClientIP -> ctx.ClientIP
-
ctx.ContentType -> ctx.ContentType
-
ctx.Copy -> ctx.Copy
-
ctx.Data -> ctx.Data
-
ctx.DefaultPostForm -> ctx.DefaultPostForm
-
ctx.DefaultQuery -> ctx.DefaultQuery
-
ctx.Error -> ctx.Error
-
ctx.File -> ctx.File
-
ctx.FileAttachment -> ctx.FileAttachment
-
ctx.FileFromFS -> ctx.FileFormFS
-
ctx.FormFile -> ctx.FormFile
-
ctx.FullPath -> ctx.FullPath
-
ctx.Get -> ctx.Get
-
ctx.GetBool -> ctx.GetBool
-
ctx.GetDuration -> ctx.GetDuartion
-
ctx.GetFloat64 -> ctx.GetFloat64
-
ctx.GetHeader -> ctx.GetHeader
-
ctx.GetInt -> ctx.GetInt
-
ctx.GetInt64 -> ctx.GetInt64
-
ctx.GetPostForm -> ctx.GetPostForm
-
ctx.GetQuery -> ctx.GetQuery
-
ctx.GetRawData -> ctx.GetRawData
-
ctx.GetString -> ctx.GetString
-
ctx.GetStringMap -> ctx.GetStringMap
-
ctx.GetStringMapString -> ctx.GetStringMapString
-
ctx.GetStringMapStringSlice -> ctx.GetStringMapStringSlice
-
ctx.GetStringSlice -> ctx.GetStringSlice
-
ctx.GetTime -> ctx.GetTime
-
ctx.GetUint -> ctx.GetUint
-
ctx.GetUint64 -> ctx.GetUint64
-
ctx.HTML -> ctx.HTML
-
ctx.Handler -> ctx.Handler
-
ctx.HandlerName -> ctx.HandlerName
-
ctx.Header -> ctx.Header
-
ctx.IndentedJSON -> ctx.IndentedJSON
-
ctx.IsAborted -> ctx.IsAborted
-
ctx.JSON -> ctx.JSON
-
ctx.MultipartForm -> ctx.MultipartForm
-
ctx.MustGet -> ctx.MustGet
-
ctx.Next -> ctx.Next
-
ctx.Param -> ctx.Param
-
ctx.PostForm -> ctx.PostForm
-
ctx.ProtoBuf -> ctx.ProtoBuf
-
ctx.PureJSON -> ctx.PureJSON
-
ctx.Query -> ctx.Query
-
ctx.Redirect -> ctx.Redirect
-
ctx.Render -> ctx.Render
-
ctx.Set -> ctx.Set
-
ctx.Status -> ctx.Status
-
ctx.String -> ctx.String
-
ctx.Value -> ctx.Value
-
ctx.XML -> ctx.XML
-
ctx.Deadline -> c.Deadline
-
ctx.Done -> c.Done
-
ctx.Err -> c.Err
-
ctx.Value -> c.Value