在OpenAPI描述中添加自定义验证标签

问题描述 投票:0回答:1

我试图了解 OpenAPI 规范如何使用 go 语言工作。

我创建了 yaml 文件,我想将其生成到我的 go 代码中以用于请求和响应结构。

但是有些结构需要自定义验证器。于是就这样写了:

var validate *validator.Validate

func init() {
  validate = validator.New()
  if err := validate.RegisterValidation("email", validateEmail); err != nil {
    logger.Fatalf("Couldn't register email validator, err=%v", err)
  }
}

func validateEmail(fl validator.FieldLevel) bool {
  email := fl.Field().String()

  emailRegex := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`

  return regexp.MustCompile(emailRegex).MatchString(email)
}

我不能用这样的验证器标签编写结构

type somStruct struct {
  Email string `validate:"email"`
}

是否可以添加到将生成到此类结构的 OpenAPI 描述?

go openapi openapi-generator
1个回答
0
投票

您是否尝试添加

format
关键字? 我认为 openapi-generator-cli 使用格式注释

components:
  schemas:
   User:
    type: object
    properties:
      email:
        type: string
        format: email
© www.soinside.com 2019 - 2024. All rights reserved.