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

在反向代理后面提供招摇过市的ui(基本上下文没有application.properties)

东门俊民
2023-03-14

我有一个软件,它有两个不同的任务:

  1. 假设一个应用任务
  2. 一个Restapi任务

基本上下文{host}/application/…上的应用程序任务。。。使用Springboot初始化,如下所示:

    public static void main(String[] args) {
        new SpringApplicationBuilder(ApplicationStarter.class).properties(Properties.loadPortProperty()).run(args);
    }

    @Bean
    public ServletRegistrationBean endpoint() {
        return new ServletRegistrationBean(new ApplicationServlet(), "/application/*");
    }

包含swagger的restapi任务配置如下(我认为此时不需要restapiendpoint):

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
@Controller
@RequestMapping("/api")
public class HomeController {

    @ApiIgnore
    @GetMapping(value = "")
    public void index(HttpServletResponse response) throws IOException {
        response.sendRedirect("/api/swagger-ui.html");
    }

}
@Configuration
@EnableSwagger2
public class SwaggerDocumentationConfig implements WebMvcConfigurer {

    @Bean
    public Docket api() {

        return new Docket(DocumentationType.SWAGGER_2)
                .useDefaultResponseMessages(false)
                .select()
                .apis(RequestHandlerSelectors.basePackage("test.package"))
                .paths(PathSelectors.any())
                .build();
    }

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/api/swagger-ui.html**")
                .addResourceLocations("classpath:/META-INF/resources/swagger-ui.html");
        registry.addResourceHandler("/api/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {

        registry.addRedirectViewController("/api/v2/api-docs", "/v2/api-docs");
        registry.addRedirectViewController("/api/swagger-resources/configuration/security", "/swagger-resources/configuration/security");
        registry.addRedirectViewController("/api/swagger-resources/configuration/ui", "/swagger-resources/configuration/ui");
        registry.addRedirectViewController("/api/swagger-resources", "/swagger-resources");
    }

}

因此,此配置在我的本地计算机上运行良好。问题是,如果此配置在反向代理之后运行,我将无法访问swagger ui。html因为在没有/api/的情况下在swagger上重定向而达到了完全不同的部署(例如,另一个web ui)。结果,浏览器显示/api/swagger用户界面。html http错误404无法推断基本url消息

如果我通过应用程序设置/api/。项目资源下面的属性文件问题是第一个任务(应用程序任务)将其基本上下文更改为/api/application/。。。这是不需要的。。。但是如果我愿意的话,这个招摇过市的用户界面会按预期的那样工作。

所以我的问题是如何告诉整个昂首阔步的部署,它应该使用基本上下文路径 /api/而不是/?

感谢您的支持,我希望问题是可以理解的:)

共有1个答案

宣瀚
2023-03-14

我自己找到了一个解决方案,并将其发布给可能有相同问题的其他人。我只是提供自己的endpoint实现

  • /api/炫耀资源/配置/安全性

以及手动返回swagger ui所需的值。html。。。考虑到这些JSON值是静态的,所以这样做应该没有问题。

 类似资料:
  • 我一直试图让斯威格在NGINX反向代理后工作,但我就是做不好。我的服务在docker容器中运行,我希望使用以下示例URL访问它们: 我的服务: 昂首阔步: 我的嵌套位置块如下所示: 我的NGINX日志如下所示: 直接测试这一点,而无需通过NGINX,该过程将继续进行,并获得/v2/api和/swagger资源。在这之前,使用反向代理会被卡住。 对此有何建议? 编辑:这里是一个NGINX日志,当不尝

  • 我正在公开一个HTTPS服务API网关,该网关具有托管在带有ingress nginx控制器的Azure AKS群集上的Swagger UIhttps://kubernetes.github.io/ingress-nginx/ 在我的域中公开路径。com/swagger工作得很好,但当我尝试进行API调用时(POST、GET等)我得到一个404错误。 我的入口配置如下所示: 有人知道如何成功地进行

  • 我试图通过Swagger UI记录在供应商产品(WSO2 ESB)中开发的现有API服务,以供公司内部使用。供应商产品不支持招摇过市。我计划以编程方式检查/处理API服务的源代码(编写在供应商产品中),并在中生成一个包含swagger定义文件的目录/文件夹/库。json或。yml格式。那很好,我能做到。 这些api定义文件中的每一个都将在swagger UI中很好地呈现,我正在考虑使用https:

  • 我试图在我的微服务项目中生成一个单独的招摇过市,在Api网关中将所有服务招摇过市聚合成一个单独的招摇过市。为了实现这一点,我将遵循下一个教程https://objectpartners.com/2017/09/28/aggregate-services-into-a-single-swagger 这里的问题是,当我尝试设置绝对URL时,我收到的输出是未能加载API定义。未定义的http://loc

  • 我在8080上启动jwilder nginx代理 我正在运行一个标准的容器,而没有映射端口(因此80在容器网络上公开)。我使用一个env var与代理连接: 错误: 我错过了什么?我是否在某处更改了apache配置?(现在都是默认的)。它似乎穿过了nginx,因为我看到了一个apache错误,所以我想我需要告诉里面的apache(php apache):允许这个“路由”)?

  • 已安装Java版本8更新271。 从这个链接下载了swagger-codemen-cli版本2.4.17 当我运行命令生成时,我得到以下问题 我必须使用这个JSON,但我也测试了这个样本JSON 对于2.4.7 rc1,我得到以下错误: 试着一步一步地找到答案。没找到。 任何指针都是有用的 尚卡尔