当前位置: 首页 > 知识库问答 >
问题:

如何在Kong后面配置Spring OpenAPI UI

尉迟景福
2023-03-14

我有一个Spring Boot应用程序,我使用Kong作为API网关。

我想用SpringDoc OpenAPI记录我的应用程序的RESTAPI。

当我独立运行Spring Boot应用程序时,一切都在本地运行得很好,但当访问Kong后面的Swagger/OpenAPI UI时,我面临一个问题。

这是我的kong.yml:

services:
 - name: foo
   url: http://localhost:9000/foo
   routes:
   - name: foo-route
     paths:
      - /local/api/foo
     methods:
     - GET
     - POST
     - PUT
     - OPTIONS
     - DELETE
     - PATCH
     - HEAD

假设kong位于8000端口,而我的Spring应用程序位于9000端口。

当我在<代码>http://localhost:8000/local/api/foo/swagger-用户界面。html,我被重定向到http://localhost:8000/foo/swagger-用户界面/索引。html?configUrl=/foo/v3/api docs/swagger config,路径错误。

如何解决此问题?

共有1个答案

乐正浩博
2023-03-14

找到了解决方案!

在Spring Boot方面,由于我使用的是高于2.2的版本,所以只需要以下bean:

@Bean
ForwardedHeaderFilter forwardedHeaderFilter() {
    return new ForwardedHeaderFilter();
}

以及此配置:

server:
  forward-headers-strategy: framework 

在Kong方面,由于我使用的版本过低(2.0.3),我需要将以下插件添加到我的kong.yml配置文件中:

plugins:     
 - name: request-transformer
   service: foo
   config:
    add:
     headers:
      - x-forwarded-prefix:/local/api/foo

据我了解,在较新的Kong版本中不需要这样做:只要主机具有受信任的ip,就会自动添加标头x-转发-前缀

 类似资料:
  • 问题内容: 我有支持Hateoas的Spring Data Rest。它在代理后面。 后端网址: 代理网址: 当我查询代理url时,例如,我得到一个href带有domain链接的响应。我需要域名。 问题答案: 从Spring-Boot 2.1 / Spring 5.1开始,Spring将处理X-Forwarded- *的职责从Spring HATEOAS转移到Spring MVC。 现在,你需要注

  • 我已经用声明式方法配置了kong。我的服务和路由有类似的配置。 我的服务和路线已注册,我可以看到如下响应: Kong日志文件出错: 我按照这篇文章来解决它。但是没有成功。 https://docs.konghq.com/0.13.x/getting-started/configuring-a-service/ https://www.jerney.io/secure-apis-kong-keycl

  • 我通过kong创建了一个新的API配置。。(虚拟API)如下所示。 卷曲-i-X POST\ --网址http://localhost:8001/apis/\--data'name=myRESTapi'\--data'hosts=myRESTapi。com'\--data'上游url=http://demo1592110.mockable.io/hello' HTTP/1.1 201创建日期: F

  • 有没有办法在香港添加APIendpoint而不使用curl?我已经使用docker compose在docker容器中启动并运行了Kong,我希望能够在容器旋转上传递一个配置文件(或您所拥有的),该文件概述了我希望设置的endpoint。这可能吗?这是我找到的最接近解决方案:http://blog.toast38coza.me/kong-up-and-running-part-2-defining

  • 问题内容: 只是想知道注销后可以在哪里设置重定向到的URL。我知道您可以设置登录网址。我想重定向到我的主页。 问题答案: 一种更简单的方法: 在你的登出请求网址中添加“下一个”参数。例如: 然后,注销视图将为你解决问题。 对于登录后重定向,你只需在settings.py中进行设置即可:

  • 在Liferay IDE中创建portlet时,我已将其配置为具有Liferay的配置模式。作为回应,wizart创建了包含以下文本的JSP文件: 如何从Liferay调用此页面查看此文本?单击扳手图标并选择时,我看不到类似的内容。 更新 路径设置正确,因为它是由向导设置的。 问题是如何通过鼠标从Web界面调用这个JSP?