【问题标题】:How to validate JSON payload against OpenApi specification from Ruby?如何根据 Ruby 的 OpenApi 规范验证 JSON 有效负载?
【发布时间】:2020-03-04 22:53:50
【问题描述】:

我的 HTTP 请求负载按照 jsonapi.org 准则构建:

{
  "data": {
    "type": "employee",
    "attributes": {
      "firstName": "John",
      "lastName": "Doe",
    }
  }
}

然后我有这个有效载荷的OpenApi 规范(yaml):

employee: 
  type: object
  required: [data]
  properties:
    data:
      type: object
      properties:
        type:
          type: string
          enum: [employee]
        attributes: 
          type: object
          required: [firstName, lastName]
          properties:
            firstName:
              type: string
              example: 'John'
            lastName:
              type: string
              example: 'Doe'

我想要的是根据规范(来自 Ruby/Rails)验证有效负载。

存在openapi3_parser gem,但它似乎只能验证规范,而不是实际的有效负载。

然后,有jsonapi.org payload deserializers,但似乎根本不关心 OpenApi 正式规范。

我使用 OpenApi 来描述有效负载,因为我通过 Swagger 免费获得了 http API 文档。

【问题讨论】:

    标签: ruby openapi json-api


    【解决方案1】:

    可以通过json-schema实现,例如:

    errors = JSON::Validator.fully_validate(schema, payload)
    

    (它适用于我的 json-schema gem 2.8.1,模式本身是用 openapi v 2.0 编写的)

    【讨论】:

    • 我该怎么做? json-schema 无法针对 openapi 模式进行验证。它支持高达draft4的json-schema。
    • 您可以升级到使用现在是 JSON 模式的 OpenAPI 3.1。 .并在different language 中使用验证器,因为还没有适用于 JSON Schema 2019 的 ruby​​ 验证器。或者升级到 3.0,然后使用支持 JSON Schema Draft-7 的 OpenAPI to JSON Schema coverterjson_schemer ruby​​ gem
    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 2020-03-27
    • 2020-04-06
    • 2019-04-21
    相关资源
    最近更新 更多