Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据Java中的Swagger定义验证JSON消息_Java_Json_Rest_Validation_Swagger - Fatal编程技术网

根据Java中的Swagger定义验证JSON消息

根据Java中的Swagger定义验证JSON消息,java,json,rest,validation,swagger,Java,Json,Rest,Validation,Swagger,我使用Swagger定义创建了一个restapi,现在我需要使用Swagger模式验证传入消息。我发现了几种解决方案,但是它们都依赖于特定的用例。最接近我需要的是它的描述,它与提供的json模式配合得很好,但是当我提供更复杂的招摇过市定义时,它只是将所有内容标记为有效。我的问题是。是否有更好的、更完整的或有能力的解决方案(可能是库)可以根据Swagger定义对给定的JSON消息进行本机验证?我之所以需要这个,是因为我正在实施WSO2 API REST解决方案,这将非常有帮助。看看我的答案,这里有

我使用Swagger定义创建了一个restapi,现在我需要使用Swagger模式验证传入消息。我发现了几种解决方案,但是它们都依赖于特定的用例。最接近我需要的是它的描述,它与提供的json模式配合得很好,但是当我提供更复杂的招摇过市定义时,它只是将所有内容标记为有效。我的问题是。是否有更好的、更完整的或有能力的解决方案(可能是库)可以根据Swagger定义对给定的JSON消息进行本机验证?我之所以需要这个,是因为我正在实施WSO2 API REST解决方案,这将非常有帮助。

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

它基于使用库:。它允许根据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;
        }
对于不同的框架,有几个适配器,例如:

它能够根据Swagger/OpenAPI 2或OpenAPI 3方案验证请求和/或响应

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

验证器能够使用i18n

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