cherry

package module
v1.19.3 Latest Latest
Warning

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

Go to latest
Published: Nov 3, 2025 License: MIT Imports: 50 Imported by: 9

README

cherry

cherry是一个基于go语言的http&grpc框架,可通过一个实现一个端口同时提供http和grpc服务

grpc-gateway

protobuf插件生成基于gin的gateway,实现基于grpc的对外提供http接口

grpc-web

grpc-web集成,通过浏览器调用grpc服务

http3

通过quic实现http3的支持

可观测性

集成opentelemetry

graphql(废弃)

鉴于国内实际落地并不多,移除掉graphql支持

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultAccessLog added in v1.17.20

func DefaultAccessLog(ctxi *httpctx.Context, param *AccessLogParam)

func StreamAccess

func StreamAccess(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) (err error)

func StreamValidator

func StreamValidator(srv interface{}, stream grpc.ServerStream, info *grpc.StreamServerInfo, handler grpc.StreamHandler) (err error)

func UnaryValidator

func UnaryValidator(
	ctx context.Context, req interface{},
	info *grpc.UnaryServerInfo,
	handler grpc.UnaryHandler,
) (resp interface{}, err error)

Types

type AccessLog

type AccessLog = func(ctxi *httpctx.Context, pram *AccessLogParam)

type AccessLogParam added in v1.17.15

type AccessLogParam struct {
	Method, Url       string
	ReqBody, RespBody Body
	StatusCode        int
}

type ApiDocConfig added in v1.18.6

type ApiDocConfig struct {
	Enabled        bool
	UriPrefix, Dir string
}

type Body added in v1.17.21

type Body struct {
	IsJson bool
	Data   []byte
}

type CorsConfig added in v1.18.6

type CorsConfig struct {
	Enabled bool
	cors.Options
}

type DebugHandlerConfig added in v1.18.16

type DebugHandlerConfig struct {
	Enabled   bool
	UriPrefix string
}

type GrpcConfig added in v1.18.6

type GrpcConfig struct {
	EnableGrpcWeb            bool
	GrpcWebOptions           []web.Option
	Options                  []grpc.ServerOption
	UnaryServerInterceptors  []grpc.UnaryServerInterceptor
	StreamServerInterceptors []grpc.StreamServerInterceptor
}

type Http

type Http struct {
	http.Server
	CertFile string
	KeyFile  string
	HttpOption
}

type Http3

type Http3 struct {
	Enabled bool
	http3.Server
	CertFile string
	KeyFile  string
}

type HttpOption

type HttpOption struct {
	AccessLog          AccessLog
	ExcludeLogPrefixes []string
	IncludeLogPrefixes []string
}

type Option added in v1.16.7

type Option func(server *Server)

func WithContext added in v1.16.7

func WithContext(ctx context.Context) Option

func WithCors added in v1.16.7

func WithCors(cors cors.Options) Option

func WithGinHandler added in v1.16.7

func WithGinHandler(handler func(*gin.Engine)) Option

func WithGrpc added in v1.18.6

func WithGrpc(option GrpcConfig) Option

func WithGrpcHandler added in v1.16.7

func WithGrpcHandler(handler func(*grpc.Server)) Option

func WithHTTP3 added in v1.18.6

func WithHTTP3(http3 Http3) Option

func WithHttp added in v1.18.6

func WithHttp(http Http) Option

func WithTelemetry added in v1.16.7

func WithTelemetry(telemetry TelemetryConfig) Option

type Server

type Server struct {
	Http
	HTTP2        http2.Server
	HTTP3        Http3
	Gin          gini.Config
	Cors         CorsConfig
	Grpc         GrpcConfig
	ApiDoc       ApiDocConfig
	Telemetry    TelemetryConfig
	DebugHandler DebugHandlerConfig
	BaseContext  context.Context
	Middlewares  []http.HandlerFunc
	// 注册 grpc 服务
	GrpcHandler func(*grpc.Server)
	// 注册 gin 服务
	GinHandler func(*gin.Engine)
}

func NewServer

func NewServer(options ...Option) *Server

func (*Server) AfterInject added in v1.16.17

func (s *Server) AfterInject()

func (*Server) BeforeInject added in v1.16.17

func (s *Server) BeforeInject()

implement initialize

func (*Server) Init added in v1.16.7

func (s *Server) Init()

func (*Server) InternalHandler added in v1.18.16

func (s *Server) InternalHandler()

func (*Server) Run added in v1.16.7

func (s *Server) Run()

func (*Server) UnaryAccess added in v1.16.7

func (s *Server) UnaryAccess(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error)

func (*Server) WithOptions added in v1.16.7

func (s *Server) WithOptions(options ...Option) *Server

type TelemetryConfig

type TelemetryConfig struct {
	Enabled          bool
	EnablePrometheus bool
	PromHttpUri      string
	// contains filtered or unexported fields
}

func (*TelemetryConfig) SetMeterProvider

func (c *TelemetryConfig) SetMeterProvider(meterProvider *sdkmetric.MeterProvider)

func (*TelemetryConfig) SetOtelgrpcOptsHandlerOpts added in v1.18.6

func (c *TelemetryConfig) SetOtelgrpcOptsHandlerOpts(otelgrpcOpts []otelgrpc.Option)

func (*TelemetryConfig) SetOtelhttpHandlerOpts added in v1.18.6

func (c *TelemetryConfig) SetOtelhttpHandlerOpts(otelhttpOpts []otelhttp.Option)

func (*TelemetryConfig) SetPrometheusOpts added in v1.18.7

func (c *TelemetryConfig) SetPrometheusOpts(prometheusOpts []prometheus.Option)

func (*TelemetryConfig) SetTextMapPropagator

func (c *TelemetryConfig) SetTextMapPropagator(propagator propagation.TextMapPropagator)

func (*TelemetryConfig) SetTracerProvider

func (c *TelemetryConfig) SetTracerProvider(tracerProvider *sdktrace.TracerProvider)

Directories

Path Synopsis
_example
client command
protobuf/user
Package user is a reverse proxy.
Package user is a reverse proxy.
user command

Jump to

Keyboard shortcuts

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