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