apiserver

package
v0.0.0-...-17121b5 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2025 License: MIT Imports: 34 Imported by: 0

Documentation

Overview

Package apiserver implement HTTP and gRPC server.

Index

Constants

View Source
const (
	// GRPCServerMode 定义 gRPC 服务模式.
	// 使用 gRPC 框架启动一个 gRPC 服务器.
	GRPCServerMode = "grpc"
	// GRPCServerMode 定义 gRPC + HTTP 服务模式.
	// 使用 gRPC 框架启动一个 gRPC 服务器 + HTTP 反向代理服务器.
	GRPCGatewayServerMode = "grpc-gateway"
	// GinServerMode 定义 Gin 服务模式.
	// 使用 Gin Web 框架启动一个 HTTP 服务器.
	GinServerMode = "gin"
)

Variables

This section is empty.

Functions

func InitializeWebServer

func InitializeWebServer(config *Config) (server.Server, error)

func InstallGenericAPI

func InstallGenericAPI(engine *gin.Engine)

InstallGenericAPI 注册业务无关的路由,例如 pprof、404 处理等.

func NewAuthnWhiteListMatcher

func NewAuthnWhiteListMatcher() selector.Matcher

NewAuthnWhiteListMatcher 创建认证白名单匹配器.

func NewAuthzWhiteListMatcher

func NewAuthzWhiteListMatcher() selector.Matcher

NewAuthzWhiteListMatcher 创建授权白名单匹配器.

func NewWebServer

func NewWebServer(serverMode string, serverConfig *ServerConfig) (server.Server, error)

func ProvideDB

func ProvideDB(cfg *Config) (*gorm.DB, error)

ProvideDB 根据配置提供一个数据库实例。

Types

type Config

type Config struct {
	ServerMode        string
	JWTKey            string
	Expiration        time.Duration
	EnableMemoryStore bool
	TLSOptions        *genericoptions.TLSOptions
	HTTPOptions       *genericoptions.HTTPOptions
	GRPCOptions       *genericoptions.GRPCOptions
	MySQLOptions      *genericoptions.MySQLOptions
}

Config 配置结构体,用于存储应用相关的配置. 不用 viper.Get,是因为这种方式能更加清晰的知道应用提供了哪些配置项.

func (*Config) NewDB

func (cfg *Config) NewDB() (*gorm.DB, error)

NewDB 创建一个 *gorm.DB 实例.

func (*Config) NewUnionServer

func (cfg *Config) NewUnionServer() (*UnionServer, error)

NewUnionServer 根据配置创建联合服务器.

type ServerConfig

type ServerConfig struct {
	// contains filtered or unexported fields
}

ServerConfig 包含服务器的核心依赖和配置.

func (*ServerConfig) InstallRESTAPI

func (c *ServerConfig) InstallRESTAPI(engine *gin.Engine)

InstallRESTAPI 注册 API 路由。路由的路径和 HTTP 方法,严格遵守 REST 规范.

func (*ServerConfig) NewGRPCServerOr

func (c *ServerConfig) NewGRPCServerOr() (server.Server, error)

NewGRPCServerOr 创建并初始化 gRPC 或者 gRPC + gRPC-Gateway 服务器. 在 Go 项目开发中,NewGRPCServerOr 这个函数命名中的 Or 一般用来表示“或者”的含义, 通常暗示该函数会在两种或多种选择中选择一种可能性。具体的含义需要结合函数的实现 或上下文来理解。以下是一些可能的解释:

  1. 提供多种构建方式的选择
  2. 处理默认值或回退逻辑
  3. 表达灵活选项

func (*ServerConfig) NewGinServer

func (c *ServerConfig) NewGinServer() server.Server

NewGinServer 初始化一个新的 Gin 服务器实例.

type UnionServer

type UnionServer struct {
	// contains filtered or unexported fields
}

UnionServer 定义了一个联合服务器,根据 ServerMode 决定要启动的服务器类型.

联合服务器分为以下 2 大类:

  1. Gin 服务器:由 Gin 框架创建的标准的 REST 服务器。根据是否开启 TLS, 来判断启动 HTTP 或者 HTTPS;
  2. GRPC 服务器:由 gRPC 框架创建的标准 RPC 服务器
  3. HTTP 反向代理服务器:由 grpc-gateway 框架创建的 HTTP 反向代理服务器。 根据是否开启 TLS,来判断启动 HTTP 或者 HTTPS;

HTTP 反向代理服务器依赖 gRPC 服务器,所以在开启 HTTP 反向代理服务器时,会先启动 gRPC 服务器.

func (*UnionServer) Run

func (s *UnionServer) Run() error

Run 运行应用.

type UserRetriever

type UserRetriever struct {
	// contains filtered or unexported fields
}

UserRetriever 定义一个用户数据获取器. 用来获取用户信息.

func (*UserRetriever) GetUser

func (r *UserRetriever) GetUser(ctx context.Context, userID string) (*model.UserM, error)

GetUser 根据用户 ID 获取用户信息.

Directories

Path Synopsis
biz
Package biz implement biz interface.
Package biz implement biz interface.
v1/post
Package post implement biz of post.
Package post implement biz of post.
v1/user
Package user implement biz of user.
Package user implement biz of user.
handler
grpc
Package grpc implement handler of grpc.
Package grpc implement handler of grpc.
http
Package http implement handler of http.
Package http implement handler of http.
Package model define store model.
Package model define store model.
pkg
conversion
Package conversion converting biz struct to store data struct.
Package conversion converting biz struct to store data struct.
validation
Package validation validate request parames.
Package validation validate request parames.
nolint: dupl
nolint: dupl

Jump to

Keyboard shortcuts

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