如何根据 Swagger 模式验证 JSON 模式的实例?

huangapple go评论80阅读模式
英文:

How do I validate an instance of JSON schema against a swagger schema?

问题

我有一个 JSON 负载(请求或响应),我想要根据我拥有的 Swagger 模式对该实例进行验证。我该如何做到这一点?

请注意,我并不是要验证我的规范是否符合 OpenAPI/Swagger 规范。

我希望在不使用外部 JSON 验证器的情况下实现这一目标。我也希望在 Go 中实现这个(具体来说是 go-openapi)。

谢谢。

英文:

I have a JSON payload (request or response) and I want to validate that instance against a swagger schema that I have. How do I do that?

Please note that I am not trying to validate if my spec is an OpenAPI/Swagger spec.

I'd like to achieve this without the use of external JSON validators. I am also trying to achieve this in Go (specifically go-openapi)

Thanks.

答案1

得分: 3

你需要获取定义验证规则的模式,通常存储在swagger规范定义属性中。

你还需要获取你的模型(JSON数据结构,可以是映射或结构体)。
这是一个示例:

var model models.User
json.Unmarshal(bytes, &model)

var spec *spec.Swagger = getSpec()
schema := spec.Definitions["User"]

if err := validate.AgainstSchema(schema, &model, strfmt.Default); err != nil {
  return err
}
英文:

You need to get a hold of the schema that defines your validation rules, that's typically stored in the swagger spec definition property.

And you need to get your model (json data structure, can be a map or a struct).
Here's an example:

var model models.User
json.Unmarshal(bytes, &model)

var spec *spec.Swagger = getSpec()
schema := spec.Definitions["User"]

if err := validate.AgainstSchema(schema, &model, strfmt.Default); err != nil {
  return err
}

huangapple
  • 本文由 发表于 2017年5月8日 23:10:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/43851176.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定