在Java

时间:2017-05-03 12:26:50

标签: java json rest validation swagger

我使用Swagger定义创建了一个REST API,现在我需要使用该swagger模式验证传入消息。我发现了几种解决方案,但它们都依赖于某些特定的用例。最接近我需要的是this并且对它的描述是正确的,它适用于提供的json模式,但是当我提供更复杂的swagger定义时,它只是将所有内容标记为有效。我的问题是。是否有更好,更完整或更有能力的解决方案库,它可以本机验证针对Swagger定义的给定JSON消息?我需要这个,因为我正在实施WSO2 API REST解决方案,这将有很大帮助。

2 个答案:

答案 0 :(得分:0)

在这里查看我的答案,并提供以下解决方案:

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;
        }

答案 1 :(得分:0)

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

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

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

验证器具有i18n功能。

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