Documentation
¶
Overview ¶
Package apiserver implement HTTP and gRPC server.
Index ¶
- Constants
- func InitializeWebServer(config *Config) (server.Server, error)
- func InstallGenericAPI(engine *gin.Engine)
- func NewAuthnWhiteListMatcher() selector.Matcher
- func NewAuthzWhiteListMatcher() selector.Matcher
- func NewWebServer(serverMode string, serverConfig *ServerConfig) (server.Server, error)
- func ProvideDB(cfg *Config) (*gorm.DB, error)
- type Config
- type ServerConfig
- type UnionServer
- type UserRetriever
Constants ¶
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 InstallGenericAPI ¶
InstallGenericAPI 注册业务无关的路由,例如 pprof、404 处理等.
func NewAuthnWhiteListMatcher ¶
NewAuthnWhiteListMatcher 创建认证白名单匹配器.
func NewAuthzWhiteListMatcher ¶
NewAuthzWhiteListMatcher 创建授权白名单匹配器.
func NewWebServer ¶
func NewWebServer(serverMode string, serverConfig *ServerConfig) (server.Server, error)
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) 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 一般用来表示“或者”的含义, 通常暗示该函数会在两种或多种选择中选择一种可能性。具体的含义需要结合函数的实现 或上下文来理解。以下是一些可能的解释:
- 提供多种构建方式的选择
- 处理默认值或回退逻辑
- 表达灵活选项
func (*ServerConfig) NewGinServer ¶
func (c *ServerConfig) NewGinServer() server.Server
NewGinServer 初始化一个新的 Gin 服务器实例.
type UnionServer ¶
type UnionServer struct {
// contains filtered or unexported fields
}
UnionServer 定义了一个联合服务器,根据 ServerMode 决定要启动的服务器类型.
联合服务器分为以下 2 大类:
- Gin 服务器:由 Gin 框架创建的标准的 REST 服务器。根据是否开启 TLS, 来判断启动 HTTP 或者 HTTPS;
- GRPC 服务器:由 gRPC 框架创建的标准 RPC 服务器
- HTTP 反向代理服务器:由 grpc-gateway 框架创建的 HTTP 反向代理服务器。 根据是否开启 TLS,来判断启动 HTTP 或者 HTTPS;
HTTP 反向代理服务器依赖 gRPC 服务器,所以在开启 HTTP 反向代理服务器时,会先启动 gRPC 服务器.
Directories
¶
Path | Synopsis |
---|---|
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 |