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