core

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 21, 2023 License: MIT Imports: 34 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DisableRecordMetrics

func DisableRecordMetrics(ctx Context)

DisableRecordMetrics 禁止记录指标

func DisableTraceLog

func DisableTraceLog(ctx Context)

DisableTraceLog 禁止记录日志

Types

type BusinessError

type BusinessError interface {

	// WithError 设置错误信息
	WithError(err error) BusinessError

	// WithAlert 设置告警通知
	WithAlert() BusinessError

	// BusinessCode 获取业务码
	BusinessCode() int

	// HTTPCode 获取 HTTP 状态码
	HTTPCode() int

	// Message 获取错误描述
	Message() string

	// StackError 获取带堆栈的错误信息
	StackError() error

	// IsAlert 是否开启告警通知
	IsAlert() bool
	// contains filtered or unexported methods
}

func Error

func Error(httpCode, businessCode int, message string) BusinessError

type Context

type Context interface {

	// 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") == ""
	Query(key string) (value string)

	GetQuery(key string) (string, bool)

	GetQueryArray(key string) (values []string, ok bool)

	// ShouldBindQuery 反序列化 querystring
	// tag: `form:"xxx"` (注:不要写成 query)
	ShouldBindQuery(obj interface{}) error

	// ShouldBindPostForm 反序列化 postform (querystring会被忽略)
	// tag: `form:"xxx"`
	ShouldBindPostForm(obj interface{}) error

	// ShouldBindForm 同时反序列化 querystring 和 postform;
	// 当 querystring 和 postform 存在相同字段时,postform 优先使用。
	// tag: `form:"xxx"`
	ShouldBindForm(obj interface{}) error

	// ShouldBindJSON 反序列化 postjson
	// tag: `json:"xxx"`
	ShouldBindJSON(obj interface{}) error

	// ShouldBindURI 反序列化 path 参数(如路由路径为 /user/:name)
	// tag: `uri:"xxx"`
	ShouldBindURI(obj interface{}) error

	// Redirect 重定向
	Redirect(code int, location string)

	// Trace 获取 Trace 对象
	Trace() Trace

	// Logger 获取 Logger 对象
	Logger() *zap.Logger

	// Payload 正确返回
	Payload(payload interface{})

	// GraphPayload GraphQL返回值 与 api 返回结构不同
	GraphPayload(payload interface{})

	// HTML 返回界面
	HTML(name string, obj interface{})

	// AbortWithError 错误返回
	AbortWithError(err BusinessError)

	// Header 获取 Header 对象
	Header() http.Header
	// GetHeader 获取 Header
	GetHeader(key string) string
	// SetHeader 设置 Header
	SetHeader(key, value string)

	// SessionUserInfo 当前用户信息
	SessionUserInfo() proposal.SessionUserInfo

	// Alias 设置路由别名 for metrics path
	Alias() string

	// RequestInputParams 获取所有参数
	RequestInputParams() url.Values
	// RequestPostFormParams  获取 PostForm 参数
	RequestPostFormParams() url.Values
	// 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 获取请求的 context (当 client 关闭后,会自动 canceled)
	RequestContext() StdContext

	// ResponseWriter 获取 ResponseWriter 对象
	ResponseWriter() gin.ResponseWriter

	// FormFile returns the first file for the provided form key.
	FormFile(name string) (*multipart.FileHeader, error)

	// SaveUploadedFile uploads the form file to specific dst.
	SaveUploadedFile(file *multipart.FileHeader, dst string) error
	// contains filtered or unexported methods
}

type HandlerFunc

type HandlerFunc func(c Context)

func AliasForRecordMetrics

func AliasForRecordMetrics(path string) HandlerFunc

AliasForRecordMetrics 对请求路径起个别名,用于记录指标。 如:Get /user/:username 这样的路径,因为 username 会有非常多的情况,这样记录指标非常不友好。

func WrapAuthHandler

func WrapAuthHandler(handler func(Context) (sessionUserInfo proposal.SessionUserInfo, err BusinessError)) HandlerFunc

WrapAuthHandler 用来处理 Auth 的入口

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

type Mux interface {
	http.Handler
	Group(relativePath string, handlers ...HandlerFunc) RouterGroup
}

Mux http mux

func New

func New(logger *zap.Logger, options ...Option) (Mux, error)

type Option

type Option func(*option)

func WithAlertNotify

func WithAlertNotify(notifyHandler proposal.NotifyHandler) Option

WithAlertNotify 设置告警通知

func WithDisablePProf

func WithDisablePProf() Option

WithDisablePProf 禁用 pprof

func WithDisablePrometheus

func WithDisablePrometheus() Option

WithDisablePrometheus 禁用prometheus

func WithDisableSwagger

func WithDisableSwagger() Option

WithDisableSwagger 禁用 swagger

func WithEnableCors

func WithEnableCors() Option

WithEnableCors 设置支持跨域

func WithEnableOpenBrowser

func WithEnableOpenBrowser(uri string) Option

WithEnableOpenBrowser 启动后在浏览器中打开 uri

func WithEnableRate

func WithEnableRate() Option

WithEnableRate 设置支持限流

func WithRecordMetrics

func WithRecordMetrics(recordHandler proposal.RecordHandler) Option

WithRecordMetrics 设置记录接口指标

type RouterGroup

type RouterGroup interface {
	Group(string, ...HandlerFunc) RouterGroup
	IRoutes
}

RouterGroup 包装gin的RouterGroup

type StdContext

type StdContext struct {
	stdctx.Context
	Trace
	*zap.Logger
}

type Trace

type Trace = trace.T

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL