Parameter Generator

包路径: github.com/caicloud/nirvana/service

Nirvana 默认提供了 8 种类型的 Source:Path,Query,Header,Form,File,Body,Auto,Prefab。

每种 Source 对应一个 Generator。这些 Generator 负责一种类型的参数的验证和类型转换工作。

// ParameterGenerator is used to generate object for a parameter.
type ParameterGenerator interface {
    // Source returns the source generated by current generator.
    Source() definition.Source
    // Validate validates whether defaultValue and target type is valid.
    Validate(name string, defaultValue interface{}, target reflect.Type) error
    // Generate generates an object by data from value container.
    Generate(ctx context.Context, vc ValueContainer, consumers []Consumer, name string, target reflect.Type) (interface{}, error)
}

如果 Nirvana 默认提供的 Generator 不能满足实际的业务需求,可以通过 service 包提供的方法注册自定义的 Generator:

// RegisterParameterGenerator register a generator.
func RegisterParameterGenerator(generator ParameterGenerator) error

results matching ""

    No results matching ""