有没有一种直接的方法可以使用放心的方式来针对openapi生成的json模式的组件进行验证

问题描述

我们使用JJSchemaRestAssured进行了POC,效果很好。

这是用于为给定Java组件生成json模式的JJSchema代码

private void generateSchema(Class clazz,String filename) {

        JsonSchemaFactory schemaFactory = new JsonSchemaV4Factory();
        schemaFactory.setAutoputDollarschema(true);
        JsonNode schemaNode = schemaFactory.createSchema(clazz);
        try {
            PrintWriter writer = new PrintWriter(filename);
            logger.info(mapper.writeValueAsstring(schemaNode));
            writer.println(mapper.writeValueAsstring(schemaNode));
            writer.close();
        } catch(Exception e) {
            logger.error("Hit error: {}",e.getMessage(),e);
        }
        
    }

这是验证生成的架构的安全代码

oneResponseWithQuery.getValidatableResponse().assertthat().body(matchesJsonSchema(url));

我们与开发团队会面,发现他们正在使用Swagger/Open API进行json模式生成

那似乎很好。进入根级别的基本URL没有问题。

问题是我需要针对特定​​组件验证响应。

我仔细阅读了所有细节,看来应该可以为特定于组件的json模式指定路径。但这是行不通的。我不断收到404错误,或者得到了相同的根级别基本URL。

这是我要针对其进行验证的组件参考:

"responses": {
  "200": {
    "content": {
      "application/json;charset=UTF-8": {
        "schema": {
          "$ref": "#/components/schemas/MobileSearchResponse"
        }
      }
    }
  }
}

是否有一种直接的方法来对openapi中的组件使用确保保证的模式验证。

理想情况下,我希望它能正常工作:

oneResponseWithQuery.getValidatableResponse().assertthat().body(matchesJsonSchema(new URL("https://api.example.com/v1#/components/schemas/MobileSearchResponse")));

但事实并非如此。有没有一种方法可以将带有保证的json模式验证与定义为openapi.json一部分的组件一起使用?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)