我们在nginx
代理后面运行一个服务,以便:http://service-post:8080/swagger-ui.html
路由到公共地址https://host.com/services/post/swagger-ui.html
或者从另一个Angular 来定义:
当nginx接收到https://host.com/services/post/swagger-ui.html
上的请求时,它会剥离/services/post/
前缀,并将请求传递给/swagger-ui.html
路径上的post
服务。
在设置任何东西之前(使用默认的SpringDoc配置),我可以正确地看到http://service-post:8080/swagger-ui.html
上的swagger文档。
为了在host.com上设置公共地址的路径,我使用:
springdoc.api-docs.path: /services/post/api-docs
springdoc.swagger-ui.path: /services/post/swagger-ui.html
springdoc.swagger-ui.configUrl: /services/post/v3/api-docs/swagger-config
字符串
然而,这似乎完全阻止了它:/swagger-ui.html
、/api-docs
和/v3/api-docs/swagger-config
都返回404
,用于service-post:8080/*
和https://host.com/services/post/*
似乎唯一工作的是https://host.com/services/post/swagger-ui/index.html,它显示了petstore文档。
我们没有使用Sping Boot ,只使用5.3.1版的Spring MVC。
那么,如何设置以保持对原始路径(例如/api-docs
)的处理,但在前缀路径(/services/post/api-docs
)上执行查找?
3条答案
按热度按时间uhry853o1#
最后,我完全忽略了默认的重定向:
swagger-ui.html
-> `swagger-ui/index.html?url=/v3/api-docs并实现了我自己的一个:
docs
->swagger-ui/index.html?url=MY_PREFIX/v3/api-docs
这样我就不需要改变任何东西,一切都与默认设置。
yv5phkfx2#
我找到的解决方案没有一个对我有用,至少一开始是这样。所以这里是最终点击的完整解决方案:
字符串
docker
测试了设置,并在/api/user
上提供了我的API。型
这个设置的唯一问题是你不能依赖swagger的重定向。你必须写完整的URL才是安全的(如果有的话,包括尾随的斜杠)。
使用的版本:
型
zmeyuzjn3#
都记录在这里:
如果你没有使用spring-boot,你可以添加ForwardedHeaderFilter bean: