gpt4 book ai didi

java - 使用 validatorUrl 为 null 后 Swagger UI 仍然显示错误

转载 作者:行者123 更新时间:2023-12-02 12:38:54 26 4
gpt4 key购买 nike

虽然如果我要描述的话,这个场景类似于 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

我已尝试更新 SwaggerBundleConfiguration在上面的.yml中添加

validatorUrl=null

但这似乎也没有解决问题。怎么解决这个问题?

最佳答案

插入 validatorURL: null进入 swagger ui 的构造函数必须在 swagger index.html 中发生文件,而不是 Dropwizard yaml 配置文件 [see the SO post you referenced]

所以你有几个选择,但首先我不推荐 dropwizard-swagger包,因为它似乎远远落后于 Dropwizard 本身。根据version documentation on its page ,最高仅支持 Dropwizard 0.8 和 swagger-ui 2.4。 Dropwizard 为 1.x,swagger-ui 为 3.x。

选项 1

如果你去掉dropwizard-swagger lib 您可以将 swagger-ui 资源直接放入项目的 resources 目录下,并添加 AssetBundle到您的 Dropwizard 应用程序。 This bundle allows serving of static content on your classpath 。您需要的静态 html 都在 dist folder here 中(即将其复制到 dropwizard 项目中的/resources)。

你会有类似的东西

@Override
public void initialize(Bootstrap<CustomServiceConfig> bootstrap) {
bootstrap.addBundle(new AssetsBundle("/assets/swagger", "/swagger", "index.html"));
}

这将为 localhost:<port>/swagger 上的 swagger UI 提供服务就像 dropwizard-swagger lib 确实如此。

要使此解决方案发挥作用,您还需要生成 swagger json 文件并将其放入构建目录中的正确路径(也是资源路径)。 The swagger-maven-plugin can help do this for you. Here is a link关于如何在应用程序中捆绑静态 swagger ui 和 swagger json 的一些讨论。您需要修改 index.html指向您的 swagger json 文件。 The line of code is here .

const ui = SwaggerUIBundle({
url: "/path/relative/to/your/java/jar/swagger-api.json",
validatorUrl: null,
...
}

选项 2

您可以 fork dropwizard-swagger代码,修改index.html包含 validatorUrl: null 的文件放。您需要添加此内容的位置是 SwaggerUI 的构造函数中js 对象。您可以see it here .

简而言之:

window.swaggerUi = new SwaggerUi({
url: url,
validatorUrl: null,
...
}

然后,您需要重建库并将 dropwizard-swagger 的修改版本包含在您的项目中。图书馆。请注意 dropwizard-swagger项目just happens to create an AssetBundle for you .

摘要

无论哪种方式,您都需要修改 swagger ui 发行版中的 index.html 文件。最简单的方法可能是暂时忽略错误图标。

关于java - 使用 validatorUrl 为 null 后 Swagger UI 仍然显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45025212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com