Spring boot OpenAPI规范3.0在浏览器和服务器下拉列表中显示不同的url

Spring boot OpenAPI规范3.0在浏览器和服务器下拉列表中显示不同的url,spring-boot,swagger,swagger-ui,openapi,openapi-generator,Spring Boot,Swagger,Swagger Ui,Openapi,Openapi Generator,我们使用的是OpenApi规范v1.4.8。我们有负载均衡器url和域url。域urlhttp://market.place.com/productsservice/swagger-ui.html且负载平衡器url为http://7649263.path.aws.com/productsservice/swagger-ui.html 由于域中存在一些持续的网络问题,我们已经转向使用负载平衡器url来测试应用程序。当我使用上面的负载平衡器url访问swagger ui时,我看到服务器中的域url下

我们使用的是OpenApi规范v1.4.8。我们有负载均衡器url和域url。域url
http://market.place.com/productsservice/swagger-ui.html
且负载平衡器url为
http://7649263.path.aws.com/productsservice/swagger-ui.html

由于域中存在一些持续的网络问题,我们已经转向使用负载平衡器url来测试应用程序。当我使用上面的负载平衡器url访问swagger ui时,我看到服务器中的域url下拉列表(没有在任何地方添加它)。因此,浏览器地址栏和服务器下拉列表中的url是不同的

由于Swagger使用“服务器”下拉列表中的基本url创建测试路径,并且我的域不工作,因此我无法从Swagger UI发出请求。当使用浏览器中的url即负载平衡器url时,请求通过邮递员正常工作


是否有一些配置可以使服务器下拉URL和浏览器URL基本路径相同?我们要做的是,服务器下拉列表需要将url设置为浏览器地址栏中的url。

我想这是您出现此问题的一个原因。如果在OpenAPI配置中使用io.swagger.v3.oas.models.servers.Server,则应检入代码-

OpenAPI oas = new OpenAPI();
......
......
String url = "/market.place.com/"
List<Server> servers = new ArrayList<Server>();
Server server = new Server();
server.setUrl(url);
servers.add(server);
oas.setServers(servers);
OpenAPI oas=newopenapi();
......
......
字符串url=“/market.place.com/”
列表服务器=新的ArrayList();
服务器=新服务器();
setUrl(url);
添加(服务器);
oas.设置服务器(服务器);

如果您依赖于openAPI配置的编程方法,并且代码中有类似于上面的内容,那么这可能就是您看到域URI的原因。您可以用正确的URI替换它以使其工作。

可能您有
openapi 3配置java类。


你应该

新的OpenAPI().addServersItem(…)


像这样编辑您的方法。

私有字符串ip=“109.162.230.178”//你的ip
专用字符串端口=“8587”//你的港口
//如果有上下文,请添加此行
私有字符串context=“tws”//你的背景
@豆子
公共OpenAPI自定义OpenAPI(){
返回新的OpenAPI()
.addServersItem(新服务器().url(“http://“+ip+”:“+port+”/“+context))
...
}
现在,您的UI组合框如下所示:


例如,我的服务器静态ip是 109.162.230.178

我必须使用这个OpenAPI3UI


从Internet上我的本地网络之外的另一台计算机。

URL基路径是为了不暴露确切的URL详细信息而制作的。如果我们硬编码ip/端口,那么对于每个环境(dev/test/prod),我们需要一个单独的代码基,或者更确切地说是单独的配置属性文件?是否有办法通过代码获得服务器的基本路径?是的。当然,可以从application.properties获取配置。