当前位置: 首页 > 知识库问答 >
问题:

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

李利
2023-03-14

我使用Swagger定义创建了一个REST API,现在我需要使用该swagger模式验证传入的消息。我找到了几种解决方案,但是它们都依赖于一些特定的用例。最接近我需要的是这个,并且与它的描述相吻合,它可以很好地与提供的json模式配合使用,但是当我提供更复杂的swagger定义时,它只是将所有内容标记为有效。我的问题是。有没有更好、更完整或更有能力的解决方案,也许是库,可以根据Swagger定义本地验证给定的JSON消息?我需要这个,因为我正在实现WSO2 API REST解决方案,这将非常有帮助。

共有2个答案

苏宏逸
2023-03-14

有一个swagger请求验证器,它有多个适配器用于各种框架,例如:Spring Web MVC

它能够针对斯瓦格/开放API 2或OpenAPI 3方案验证请求和/或响应。

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

验证器能够国际化。

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

仲孙夕
2023-03-14

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

根据swagger文件验证json有效负载- 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;
        }
 类似资料:
  • 问题内容: 我使用Swagger定义创建了REST API,现在我需要使用该Swagger模式验证传入消息。我发现了几种解决方案,但是它们都依赖于某些特定的用例。最接近我需要的是它,并且按照它的描述,它可以与提供的json模式一起很好地工作,但是当我提供更复杂的swagger定义时,它只是将所有内容标记为有效。我的问题是。是否有更好,更完整或胜任的解决方案库,可以根据Swagger定义本地验证给定

  • 我在IBM Integration Bus中工作,我发现自己需要对收到的消息进行验证。由于IIB在这方面不支持任何类型的验证,我想知道是否有任何外部库可以为我验证这些消息。 到目前为止,我发现了这个https://github.com/swagger-api/swagger-inflector/blob/master/README.md#payload-但我想知道是否有其他选择可以更好地满足我的需

  • 问题内容: 我从一些JSON文件创建了API规范,并且尝试测试这些文件是否根据API规范进行了验证。 有一些不错的工具可以根据JSON Schema进行验证,但是我没有找到针对Swagger中创建的规范进行验证的工具(用于创建API架构的工具)。我发现的唯一解决方案是在Swagger- Editor中生成客户端/服务器,这非常麻烦。 是否已经有现有工具可以针对Swagger Schema验证JSO

  • 我从一些JSON文件中创建了一个API规范,并尝试测试这些文件是否符合API规范。 有一些很好的工具可以验证JSON模式,但是我没有机会找到一个工具来验证在Swagger(创建API模式的工具)中创建的规范。我找到的唯一解决方案是在Swagger-Editor中生成客户端/服务器,这很麻烦。 是否已经有一个现有工具可以根据Swagger模式验证JSON?

  • 这是要根据模式验证的JSON。 问题是,如果我们传递了错误的数据,它将正确地验证eid和ename的类型(即整数或字符串)。对于例如: 如果我们为限定传递了错误的类型,那么它将验证为true(即,它不验证限定的类型,可能是因为它是嵌套的)。

  • 问题内容: 我需要针对验证SOAP消息。(以可以根据模式验证文件的方式)。 我没有打电话给任何网络服务;我只有一条消息和一个,并且我需要验证该消息是正确的。而无需调用网络服务或之后的任何服务。 我需要在Java程序中对此进行验证。您知道一个小的Java库可以做到这一点吗? ps:我知道当您调用Web服务时,有几个库可以验证请求/响应。但是,我没有调用任何Web服务。我有一个简单的消息,还有一个,并