Parameter Generator

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

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

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

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

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

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