【问题标题】:Validating JSON messages against Swagger definition in Java根据 Java 中的 Swagger 定义验证 JSON 消息
【发布时间】:2017-10-01 06:47:29
【问题描述】:

我使用 Swagger 定义创建了一个 REST API,现在我需要使用该 Swagger 模式来验证传入消息。我找到了几种解决方案,但是它们都依赖于一些特定的用例。最接近我需要的是this 和它的描述,它适用于提供的 json 模式,但是当我提供更复杂的 swagger 定义时,它只是将所有内容标记为有效。我的问题是。是否有任何更好、更完整或更称职的解决方案(也许是库)可以根据 Swagger 定义本地验证给定的 JSON 消息?我需要这个,因为我正在实施 WSO2 API REST 解决方案,这将有很大帮助。

【问题讨论】:

    标签: java json rest validation swagger


    【解决方案1】:

    swagger-request-validator 有多个适用于各种框架的适配器,例如:Spring Web MVC

    它能够验证针对 Swagger / OpenAPI 2 或 OpenAPI 3 方案的请求和/或响应。

    它不只是验证定义的 JSON 主体。它也会验证请求的其余部分,例如路径(变量)、标头等。

    验证器能够 i18n。

    到目前为止,Java 中针对 Swagger 和 OpenAPI 的最完整验证。

    【讨论】:

      【解决方案2】:

      看看我的答案在这里有一个解决方案:

      Validating json payload against swagger file - json-schema-validator

      它基于使用库:https://github.com/bjansen/swagger-schema-validator。它允许根据 swagger 模式中包含的定义检查您的 json。

      try (InputStream inputStream = schemaLocation.getInputStream()) {
                  SwaggerValidator validator = SwaggerValidator.forJsonSchema(new InputStreamReader(inputStream));
                  ProcessingReport report = validator.validate(message, "/definitions/Pet");
                  return report.isSuccess();
              } catch (IOException e) {
                  logger.error("IOException", e);
                  return false;
              } catch (ProcessingException e) {
                  e.printStackTrace();
                  return false;
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-21
        • 2011-12-24
        • 1970-01-01
        相关资源
        最近更新 更多