Documentation ¶
Index ¶
- Constants
- Variables
- func AfterContext(ctx *gin.Context, ictx Context, r Resource, opt Option, ts time.Time)
- func DisableTrace(ctx Context)
- func ErrorHandler(context Context, r Resource, err interface{}, opt Option)
- func InitContext(r Resource, opt Option) gin.HandlerFunc
- func ReleaseContext(ctx Context)
- func WrapHandlers(handlers ...HandlerFunc) []gin.HandlerFunc
- type Context
- type HandlerFunc
- type IMux
- type IRoutes
- type Mux
- type OnPanicNotify
- type Option
- type OptionHandler
- type RecordMetrics
- type Resource
- type RouterGroup
- type SpecialContextResource
- type StdContext
- type Trace
Constants ¶
View Source
const ( UserID = "-user-id-" TenantID = "-tenant-id-" IsAdmin = "-is-admin-" RoleType = "-role-type-" UserName = "-user-name-" )
View Source
const MaxBurstSize = 100000
Variables ¶
View Source
var (
WithoutTracePaths map[string]bool
)
Functions ¶
func AfterContext ¶
func DisableTrace ¶
func DisableTrace(ctx Context)
func ErrorHandler ¶
func InitContext ¶
func InitContext(r Resource, opt Option) gin.HandlerFunc
func ReleaseContext ¶
func ReleaseContext(ctx Context)
func WrapHandlers ¶
func WrapHandlers(handlers ...HandlerFunc) []gin.HandlerFunc
Types ¶
type Context ¶
type Context interface { // ClientIP 返回可靠的客户端IP ClientIP() string // ShouldBindXML 反序列化 querystring // tag: `xml:"xxx"` (注:不要写成 query) ShouldBindXML(obj interface{}) *errno.Errno // ShouldBindQuery 反序列化 querystring // tag: `form:"xxx"` (注:不要写成 query) ShouldBindQuery(obj interface{}) *errno.Errno // ShouldBindPostForm 反序列化 postform (querystring会被忽略) // tag: `form:"xxx"` ShouldBindPostForm(obj interface{}) *errno.Errno // ShouldBindForm 同时反序列化 querystring 和 postform; // 当 querystring 和 postform 存在相同字段时,postform 优先使用。 // tag: `form:"xxx"` ShouldBindForm(obj interface{}) *errno.Errno // ShouldBindJSON 反序列化 postjson // tag: `json:"xxx"` ShouldBindJSON(obj interface{}) *errno.Errno // ShouldBindURI 反序列化 path 参数(如路由路径为 /user/:name) // tag: `uri:"xxx"` ShouldBindURI(obj interface{}) *errno.Errno // Redirect 重定向 Redirect(code int, location string) // Trace 获取 Trace 对象 Trace() Trace // Payload 正确返回 Payload(payload interface{}) // FilePayload 文件流返回 FilePayload(fileName string, FileContent []byte) // HTML 返回界面 HTML(name string, obj interface{}) // XML 返回XML响应 XML(obj interface{}) // String 返回String响应 String(format string, values ...interface{}) // AbortWithError 错误返回 AbortWithError(err *errno.Errno) // Header 获取 Header 对象 Header() http.Header // GetHeader 获取 Header GetHeader(key string) string // SetHeader 设置 Header SetHeader(key, value string) // SetCookie 设置response cookie SetCookie(name, value string) // Cookie 获取request cookie Cookie(name string) (string, error) // IsAdmin 是否管理员 IsAdmin() bool // RoleType 角色类型 RoleType() int32 // TenantID 租户ID TenantID() int64 // UserID 获取 UserID UserID() int64 // UserName 获取 UserName UserName() string // Alias 设置路由别名 for metrics uri Alias() string // RequestInputParams 获取所有参数 RequestInputParams() url.Values // RequestPostFormParams 获取 PostForm 参数 RequestPostFormParams() url.Values FormFile(name string) (*multipart.FileHeader, error) // Request 获取 Request 对象 Request() *http.Request // RawData 获取 Request.Body RawData() []byte // Method 获取 Request.Method Method() string // Host 获取 Request.Host Host() string // Path 获取 请求的路径 Request.URL.Path (不附带 querystring) Path() string // URI 获取 unescape 后的 Request.URL.RequestURI() URI() string // RequestContext (包装 Trace + Logger) 获取一个用来向别的服务发起请求的 context (当client关闭后,会自动canceled). // 可以传一个数字进来, 作为timeout的值, 单位是秒. 注意只能传0个或一个, 不要传多了 RequestContext(timeout ...int) *StdContext // ResponseWriter 获取 ResponseWriter 对象 ResponseWriter() gin.ResponseWriter // GinContext 获取gin的ctx GinContext() *gin.Context // contains filtered or unexported methods }
func CreateSpecialContext ¶
func CreateSpecialContext(r SpecialContextResource) Context
func NewContext ¶
type HandlerFunc ¶
type HandlerFunc func(c Context)
func AliasForRecordMetrics ¶
func AliasForRecordMetrics(path string) HandlerFunc
AliasForRecordMetrics 对请求uri起个别名,用于prometheus记录指标。 如:Get /user/:username 这样的uri,因为username会有非常多的情况,这样记录prometheus指标会非常的不有好。
type IMux ¶
type IMux interface { http.Handler GetEngine() *gin.Engine Group(relativePath string, handlers ...HandlerFunc) RouterGroup }
IMux http Mux
type IRoutes ¶
type IRoutes interface { Any(string, ...HandlerFunc) GET(string, ...HandlerFunc) POST(string, ...HandlerFunc) DELETE(string, ...HandlerFunc) PATCH(string, ...HandlerFunc) PUT(string, ...HandlerFunc) OPTIONS(string, ...HandlerFunc) HEAD(string, ...HandlerFunc) }
IRoutes 包装gin的IRoutes
type Mux ¶
func (*Mux) Group ¶
func (m *Mux) Group(relativePath string, handlers ...HandlerFunc) RouterGroup
type OnPanicNotify ¶
OnPanicNotify 发生panic时通知用
type Option ¶
type Option struct { DisablePProf bool DisableSwagger bool DisablePrometheus bool PanicNotify OnPanicNotify RecordMetrics RecordMetrics EnableCors bool EnableRate bool }
type OptionHandler ¶
type OptionHandler func(*Option)
func WithDisablePrometheus ¶
func WithDisablePrometheus() OptionHandler
WithDisablePrometheus 禁用prometheus
func WithEnableRate ¶
func WithEnableRate() OptionHandler
func WithRecordMetrics ¶
func WithRecordMetrics(record RecordMetrics) OptionHandler
WithRecordMetrics 设置记录prometheus记录指标回调
type RecordMetrics ¶
type RecordMetrics func(method, uri string, success bool, httpCode, businessCode int, costSeconds float64, traceID string)
RecordMetrics 记录prometheus指标用 如果使用AliasForRecordMetrics配置了别名,uri将被替换为别名。
type RouterGroup ¶
type RouterGroup interface { Group(string, ...HandlerFunc) RouterGroup IRoutes }
RouterGroup 包装gin的RouterGroup
type SpecialContextResource ¶
type StdContext ¶
func GetRequestContext ¶
func GetRequestContext(timeout ...int) *StdContext
Click to show internal directories.
Click to hide internal directories.