问题描述
我们使用JJSchema和RestAssured进行了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 (将#修改为@)