config

package
v0.94.1 Latest Latest
Warning

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

Go to latest
Published: Apr 28, 2024 License: MIT Imports: 53 Imported by: 0

Documentation

Overview

Package config 从配置文件加载 server.Options

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckConfigSyntax

func CheckConfigSyntax[T comparable](configDir, filename string) error

CheckConfigSyntax 检测配置项语法是否正确

func Load

func Load[T comparable](configDir, filename string) (*server.Options, T, error)

Load 从配置文件初始化 server.Options 对象

configDir 项目配置文件所在的目录; filename 用于指定项目的配置文件,相对于 configDir 文件系统。 如果此值为空,将返回 &Options{Config: config.Dir(nil, configDir)};

序列化方法由 RegisterFileSerializer 注册的列表中根据 filename 的扩展名进行查找。

T 表示用户自定义的数据项,该数据来自配置文件中的 user 字段。 如果实现了 config.Sanitizer 接口,则在加载后调用该接口;

配置文件

对于配置文件各个字段的定义,可参考当前目录下的 CONFIG.html。 配置文件中除了固定的字段之外,还提供了泛型变量 User 用于指定用户自定义的额外字段。

注册函数

当前包提供大量的注册函数,以用将某些无法直接采用序列化的内容转换可序列化的。 比如通过 RegisterCompression 将 `gzip-default` 等字符串表示成压缩算法, 以便在配置文件进行指定。

所有的注册函数处理逻辑上都相似,碰上同名的会覆盖,否则是添加。 且默认情况下都提供了一些可选项,只有在用户需要额外添加自己的内容时才需要调用注册函数。

func NewPrinter

func NewPrinter(glob string, fsys ...fs.FS) (*localeutil.Printer, error)

NewPrinter 根据参数指定的配置文件构建一个本地化的打印对象

语言由 localeutil.DetectUserLanguageTag 决定。 fsys 指定了加载本地化文件的文件系统,glob 则指定了加载的文件匹配规则; 对于文件的序列化方式则是根据后缀名从由 RegisterFileSerializer 注册的项中查找。

func RegisterCache

func RegisterCache(b CacheBuilder, name ...string)

RegisterCache 注册新的缓存方式

name 为缓存的名称,这将在配置文件中被引用,如果存在同名,则会覆盖。

func RegisterCompression

func RegisterCompression(id string, c compressor.Compressor)

RegisterCompression 注册压缩方法

id 表示此压缩方法的唯一 ID,这将在配置文件中被引用;

func RegisterFileSerializer

func RegisterFileSerializer(name string, m config.MarshalFunc, u config.UnmarshalFunc, ext ...string)

RegisterFileSerializer 注册用于文件序列化的方法

name 为当前数据的名称,这将在配置文件中被引用,如果存在同名,则会覆盖; ext 为文件的扩展名;

func RegisterIDGenerator

func RegisterIDGenerator(id string, b IDGeneratorBuilder)

RegisterIDGenerator 注册唯一 ID 生成器

id 表示唯一 ID,这将在配置文件中被引用。如果同名会被覆盖;

func RegisterLogsHandler

func RegisterLogsHandler(b LogsHandlerBuilder, name ...string)

RegisterLogsHandler 注册日志的 [LogsWriterBuilder]

name 为缓存的名称,这将在配置文件中被引用,如果存在同名,则会覆盖。

func RegisterMimetype

func RegisterMimetype(m web.MarshalFunc, u web.UnmarshalFunc, name string)

RegisterMimetype 注册用于序列化用户提交数据的方法

name 为名称,这将在配置文件中被引用,如果存在同名,则会覆盖。

func RegisterOnRender

func RegisterOnRender(f func(int, any) (int, any), name string)

func RegisterRegistryType

func RegisterRegistryType(f RegistryTypeBuilder, name string)

func RegisterRouterMatcher

func RegisterRouterMatcher(f RouterMatcherBuilder, name string)

func RegisterStrategy

func RegisterStrategy(f StrategyBuilder, name string)

Types

type CacheBuilder

type CacheBuilder = func(dsn string) (cache.Driver, error)

CacheBuilder 构建缓存客户端的方法

type IDGeneratorBuilder

type IDGeneratorBuilder = func() (f func() string, s web.Service)

IDGeneratorBuilder 构建生成唯一 ID 的方法

f 表示生成唯一 ID 的方法;s 为 f 依赖的服务,可以为空;

type LogsHandlerBuilder

type LogsHandlerBuilder = func(args []string) (logs.Handler, func() error, error)

LogsHandlerBuilder 构建 logs.Handler 的方法

type RegistryTypeBuilder

type RegistryTypeBuilder = func(web.Cache, *registry.Strategy, ...string) registry.Registry

RegistryTypeBuilder 生成 registry.Registry 的方法

第一个参数为 web.Cache 类型,如果返回的 registry.Registry 为非 cache 时则第一个参数可以为 nil。

type RouterMatcherBuilder

type RouterMatcherBuilder = func(...string) web.RouterMatcher

type StrategyBuilder

type StrategyBuilder = func() *registry.Strategy

StrategyBuilder 构建负载均衡算法的函数

Jump to

Keyboard shortcuts

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