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

Swagger with Spring Boot 2.0导致404错误页

叶德运
2023-03-14

我正在尝试集成我的Spring Boot版本2.0.1。大摇大摆地释放

从这篇博文中可以看出,只需添加两个Maven依赖项就很容易了,一切都应该可以正常工作。

因此,我在pom中添加了以下依赖项:

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

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.8.0</version>
    </dependency>

并创建了SwaggerConfigbean:

@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
    Docket docket = new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build();

    return docket;
   }
}

在属性文件中,在尝试使其工作时,我得到了以下3个条目:

spring.application.name=cat-service
management.server.servlet.context-path=/cat-service
server.servlet.contextPath=/cat-service

但是在最后,当访问

http://localhost:8080/cat-service/api/v2/api-docs

或位于的UI页面

http://localhost:8080/cat-服务/炫耀用户界面。html

我发现一个页面未找到错误。

我在swagger github页面中发现了这个问题,在stackoverflow中发现了这个问题,但我无法更改我的404错误。

共有3个答案

卢毅
2023-03-14

首先将SwaggerConfig.java文件添加到您的springstart文件的同一个包中,如以下示例所示。

@Configuration
@EnableSwagger2
@EnableWebMvc
public class SwaggerConfig extends WebMvcConfigurerAdapter {                                    
    @Bean
    public Docket api() { 
        return new Docket(DocumentationType.SWAGGER_2)  
          .select()                                  
          .apis(RequestHandlerSelectors.any())              
          .paths(PathSelectors.any())                          
          .build();                                           
    }

   @Override
   public void addResourceHandlers(ResourceHandlerRegistry registry) {
       registry.addResourceHandler("swagger-ui.html")
       .addResourceLocations("classpath:/META-INF/resources/");

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

}

试试这个http://localhost:8080/spring-安全rest/api/swagger ui。htmlhttp://localhost:8080/spring-安全Rest/炫耀用户界面。html

如果不起作用,请尝试更改应用程序中的路径。性质

将此添加到应用程序。特性:

server.servlet-path=/loop-service

并尝试以下网址:

http://localhost:8080/loop-服务/炫耀用户界面。html(UI文档)

http://localhost:8080/loop-服务/v2/api文档(JSON文档)

艾泉
2023-03-14

请查看参考资料:https://springfox.github.io/springfox/docs/current/

“2.1.3。从现有的2. x版本迁移”

您可以从您的pom.xml中删除springfox-swagger2和springfox-swagger-ui,并添加springfox-boo-starter(例如版本3.0.0)。您还可以删除@EnableSwagger2注释

并且:"swagger-ui位置已从超文本传输协议://host/encent-path/swagger-ui.html移动到超文本传输协议://host/encent-path/swagger-ui/index.htmlOR超文本传输协议://host/encent-path/swagger-ui/简称。这使得它可以更好地将其作为web jar拉出来,如果不需要,可以使用配置属性将其关闭。"

白通
2023-03-14

我能够使它与Spring Boot版本2.0.4一起工作。RELEASE和这篇博客文章:

我添加了以下依赖项:

<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>

和此配置文件

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SpringFoxConfig {
    @Bean
    public Docket apiDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

它成功了。

可以通过/Swagger UI访问Swagger UI。html#

 类似资料:
  • 我在我的本地主机上开发了一个laravel应用程序,运行非常好。我正试图使用Ubuntu 20.04上的nginx将其部署到AWS Lightsail实例上。我已经上传了我的laravel应用程序,并将nginx根目录更改为laravelapp/public。 主索引页(着陆页)工作正常,但我的路线都不工作(即 /login, /about等)。当我试图访问任何路线时,我得到一个404未找到错误。

  • 问题内容: 这是https://github.com/systemjs/builder/issues/611的交叉发布 我正在尝试将我的Angular 2 rc 1应用程序与systemjs-builder 0.15.16 方法捆绑在一起。角度组件具有视图以及脚本外部的一个或多个样式表。在元数据中以两种方式之一引用它们 使用绝对路径: 使用现在推荐的相对路径: 我的应用使用相对路径,并且一切正常。

  • 问题内容: 由于某些原因,我的fx:id无法正确绑定到我的类,因此始终会导致错误。 控制者 XML文件 我认为我了解问题的根源,但不了解如何正确解决。根据这个问题的答案,我认为我正在尝试在调用构造函数之前分配FXML元素(并且这些元素只能在初始化期间/之后分配)。 有没有办法 不 执行此操作?还是我犯了一个完全不同的错误? 问题答案: 您使用进口 在您的fxml文件中。 因此,在加载fxml文件时

  • 启用proguard规则后,我在向网络发送任何内容之前遇到以下错误。 java.lang.RuntimeException:无法将FormDocTankPermission转换为RequestBody 引起的 com.fasterxml.jackson.databind.exc.InvalidDefinitionException:找不到类FormDocTankPermission的序列化程序,也

  • 我想我明白我的问题的根源,但我不明白如何正确地解决它。根据这个问题的答案,我认为我试图在调用构造函数之前分配FXML元素(这些元素只能在初始化期间/之后分配)。 有没有一种方法可以在不实现的情况下做到这一点?还是我犯了一个完全不同的错误?

  • 问题内容: 如果我在2.0版本中将Jersey的url-pattern映射到,它将为所有静态资源(例如/index.html)造成404。我的具有: 如何使用相同的网址格式投放静态内容? 问题答案: 使用Jersey 1.x,如果你从Jersey servlet切换到过滤器,则应该能够从同一路径提供静态内容。删除你指定的servlet XML并将其切换到: 编辑:在Jersey 2.x中,你应该可