我正在尝试创建API文档。我使用Swagger来做这件事。我添加了以下依赖项:
<!-- swagger -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-core</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jaxrs</artifactId>
<version>1.6.2</version>
</dependency>
在那之后,我创建了简单的文档:
private static Swagger getSwagger(List<Route> routes) {
Swagger swagger = new Swagger();
swagger.basePath("localhost:4567");
swagger.info(new Info().description("My API")
.version("V1.0")
.title("API documentation")
.contact(new Contact().name("Name").url("site.com")));
swagger.schemes(Arrays.asList(Scheme.HTTP, Scheme.HTTPS));
swagger.consumes("application/json");
swagger.produces("application/json");
swagger.tag(new Tag().name("API"));
Reader reader = new Reader(swagger);
for (Route route : routes) {
reader.read(route.getClass());
}
return reader.getSwagger();
}
并将此对象转换为JSON字符串:
public static String swaggerToJson(Swagger swagger) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(Include.NON_EMPTY);
return objectMapper.writeValueAsString(swagger);
}
它工作得很好。但是我在生成的文档中得到了这个字段:swagger: '2.0'
当我将我的JSON插入swagger UI时,我得到如下错误:
Structural error at paths./api/users.get.responses.200
should NOT have additional properties
additionalProperty: responseSchema
Jump to line 26
这是因为我的代码生成了开放的API2.0文档。但是swagger UI需要开放的API 3.0。我可以在swagger UI中转换它:
但是我想创建开放的API3.0文档。我该怎么做呢?
发布于 2021-02-03 00:46:16
要生成OpenAPI 3.0文档,请将io.swagger
库更新为v. 2.x (在撰写本文时为2.1.6)。您可能还需要对代码和注释进行一些更改,因为与1.x相比,io.swagger.*
2.x中有一些破坏性的更改。
https://stackoverflow.com/questions/66007408
复制相似问题