虽然如果我要描述的情况类似于
Swagger UI Displays but I get an "ERROR" indicator。一切正常,我的路线列出正确,但显示错误,所有类似线程上建议的解决方案与设置validationUrl=null
有关。
我使用以下依赖项 -
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>io.federecio</groupId>
<artifactId>dropwizard-swagger</artifactId>
<version>0.7.0</version>
</dependency>
这就是我的注册码 -
@Override
public void initialize(Bootstrap<CustomServiceConfig> bootstrap) {
bootstrap.addBundle(new SwaggerBundle<CustomServiceConfig>() {
@Override
protected SwaggerBundleConfiguration getSwaggerBundleConfiguration(
CustomServiceConfig customServiceConfig) {
return customServiceConfig.getSwaggerBundleConfiguration();
}
});
}
config.yml
中的这些配置是 -
swagger:
title: Custom Service
description: APIs for Test
contact: me@alias.com
uriPrefix: /
resourcePackage: com.x.y.package
我已尝试更新上述.yml
中的SwaggerBundleConfiguration以添加
validatorUrl=null
但这似乎也没有解决问题。怎么解决这个问题?
答案 0 :(得分:1)
将validatorURL: null
插入swagger ui的构造函数中必须在swagger index.html
文件中进行,而不是Dropwizard yaml配置文件[see the SO post you referenced]。
所以你有几个选择,但是开始我不会推荐dropwizard-swagger
包,因为它似乎远远落后于Dropwizard本身。根据{{3}},它只支持Dropwizard 0.8和swagger-ui 2.4。 Dropwizard是1.x和swagger-ui 3.x.
如果您取消dropwizard-swagger
lib,可以将swagger-ui资产直接放入资源目录下的项目中,并将AssetBundle
添加到Dropwizard应用程序中。 version documentation on its page。您需要的静态html全部在This bundle allows serving of static content on your classpath中(即将其复制到dropwizard项目中的/ resources)。
你有
之类的东西@Override
public void initialize(Bootstrap<CustomServiceConfig> bootstrap) {
bootstrap.addBundle(new AssetsBundle("/assets/swagger", "/swagger", "index.html"));
}
将像localhost:<port>/swagger
lib一样提供dropwizard-swagger
上的招摇UI。
要使此解决方案正常工作,您还需要生成swagger json文件并将其放入构建目录中的正确路径(资源路径)。 dist
folder here The swagger-maven-plugin
can help do this for you.有关如何在应用中捆绑静态swagger ui和swagger json的讨论。您需要修改index.html
以指向您的swagger json文件。 Here is a link
const ui = SwaggerUIBundle({
url: "/path/relative/to/your/java/jar/swagger-api.json",
validatorUrl: null,
...
}
您可以分叉dropwizard-swagger
代码,修改包含index.html
的{{1}}文件。您需要添加它的位置是validatorUrl: null
js对象的构造函数。你可以The line of code is here。
简而言之:
SwaggerUI
然后,您需要重建库并在项目中包含此window.swaggerUi = new SwaggerUi({
url: url,
validatorUrl: null,
...
}
库的修改版本。请注意dropwizard-swagger
项目see it here。
无论哪种方式,您都需要修改属于swagger ui发行版的index.html文件。最简单的方法可能是暂时忽略错误图标。