如何将自定义字段添加到 SpringFox 生成的 Swagger json?
How add a custom field to the generated Swagger json from SpringFox?
我正在尝试将字段 externalDocs
添加到来自 Springfox 的 generated Json:
"externalDocs": {
"description": "find more info here",
"url": "https://swagger.io/about"
},
阅读 SpringFox 文档,我了解到我需要创建一个 plugin
来扩展 SpringFox 功能并添加此字段。我试过了:
@Component
@Order(SwaggerPluginSupport.SWAGGER_PLUGIN_ORDER + 1002)
@Slf4j
public class ExternalDocSwaggerConfiguration implements ApiListingBuilderPlugin {
@Override
public void apply(final ApiListingContext apiListingContext) {
ObjectVendorExtension ext = new ObjectVendorExtension("externalDocs");
ext.addProperty(new StringVendorExtension("description", "Link externo"));
ext.addProperty(new StringVendorExtension("url", "https://swagger.io/about"));
apiListingContext.apiListingBuilder().extensions(
Collections.singletonList(ext)); // extensions does not exist
}
@Override
public boolean supports(final DocumentationType documentationType) {
return true;
}
}
我希望添加扩展名,如 here 和 OperationBuilderPlugin
所示,但 apiListingBuilder
上没有 extensions
方法。
那么,我如何使用 SpringFox 在生成的 Swagger Json 的根上添加这个标签?
版本 2.7.0 添加 this feature。
要添加此字段 externalDocs
,您可以使用 Docket
中的 extensions
方法:
@Bean
public Docket customImplementation() {
ObjectVendorExtension ext = new ObjectVendorExtension("externalDocs");
ext.addProperty(new StringVendorExtension("description", "Link externo"));
ext.addProperty(new StringVendorExtension("url", "https://swagger.io/about"));
return new Docket(DocumentationType.SWAGGER_2)
.extensions(Collections.singletonList(ext))
.apiInfo(apiInfo())
.securitySchemes(newArrayList(apiKey()))
.pathMapping("/api")
.securityContexts(newArrayList(securityContext())).select()
.apis(getPackages())
.paths(PathSelectors.any())
.build();
}
我正在尝试将字段 externalDocs
添加到来自 Springfox 的 generated Json:
"externalDocs": {
"description": "find more info here",
"url": "https://swagger.io/about"
},
阅读 SpringFox 文档,我了解到我需要创建一个 plugin
来扩展 SpringFox 功能并添加此字段。我试过了:
@Component
@Order(SwaggerPluginSupport.SWAGGER_PLUGIN_ORDER + 1002)
@Slf4j
public class ExternalDocSwaggerConfiguration implements ApiListingBuilderPlugin {
@Override
public void apply(final ApiListingContext apiListingContext) {
ObjectVendorExtension ext = new ObjectVendorExtension("externalDocs");
ext.addProperty(new StringVendorExtension("description", "Link externo"));
ext.addProperty(new StringVendorExtension("url", "https://swagger.io/about"));
apiListingContext.apiListingBuilder().extensions(
Collections.singletonList(ext)); // extensions does not exist
}
@Override
public boolean supports(final DocumentationType documentationType) {
return true;
}
}
我希望添加扩展名,如 here 和 OperationBuilderPlugin
所示,但 apiListingBuilder
上没有 extensions
方法。
那么,我如何使用 SpringFox 在生成的 Swagger Json 的根上添加这个标签?
版本 2.7.0 添加 this feature。
要添加此字段 externalDocs
,您可以使用 Docket
中的 extensions
方法:
@Bean
public Docket customImplementation() {
ObjectVendorExtension ext = new ObjectVendorExtension("externalDocs");
ext.addProperty(new StringVendorExtension("description", "Link externo"));
ext.addProperty(new StringVendorExtension("url", "https://swagger.io/about"));
return new Docket(DocumentationType.SWAGGER_2)
.extensions(Collections.singletonList(ext))
.apiInfo(apiInfo())
.securitySchemes(newArrayList(apiKey()))
.pathMapping("/api")
.securityContexts(newArrayList(securityContext())).select()
.apis(getPackages())
.paths(PathSelectors.any())
.build();
}