use*_*119 7 java spring gradle spring-boot
这是我的代码:我从 application.properties 文件 SwaggerConfig.java 获取所有值
@Configuration
@EnableSwagger2
@Profile("!prod")
@PropertySource(value = { "classpath:application.properties" })
public class SwaggerConfig {
    @Value("${swagger.api.title}")
    private String title;
    @Value("${swagger.api.description}")
    private String description;
    @Value("${swagger.api.termsOfServiceUrl}")
    private String termsOfServiceUrl;
    @Value("${swagger.api.version}")
    private String version;
    @Value("${swagger.api.controller.basepackage}")
    private String basePackage;
    @Bean
    public Docket postMatchApi() {
        return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage(basePackage))
                .paths(PathSelectors.ant("/**")).build().apiInfo(metaData());
    }
    private ApiInfo metaData() {
        return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl(termsOfServiceUrl)
                .version(version).build();
    }
Run Code Online (Sandbox Code Playgroud)
这是我的 springboot 初始化程序:
@SpringBootApplication
@ComponentScan(basePackages = { "com.example.demo" })
@ComponentScan(basePackageClasses = {AppInitializer.class, SwaggerConfig.class})
@EnableAsync
@EnableRetry
public class AppInitializer{
    public static void main(String[] args) {
        SpringApplication.run(AppInitializer.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)
ServletInitializer.java
public class ServletInitializer extends SpringBootServletInitializer implements WebApplicationInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(PostMatchAppInitializer.class);
    }
}
Run Code Online (Sandbox Code Playgroud)
日志说它已映射:
[INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[],methods=[POST],consumes=[application/json],produces=[application/json]}" onto public <T> org.springframework.http.ResponseEntity<?> com.,org.springframework.validation.BindingResult) throws java.lang.Exception
    [INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/v2/api-docs],methods=[GET],produces=[application/json || application/hal+json]}" onto public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)
    [INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/swagger-resources/configuration/ui]}" onto org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.UiConfiguration> springfox.documentation.swagger.web.ApiResourceController.uiConfiguration()
    [INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/swagger-resources]}" onto org.springframework.http.ResponseEntity<java.util.List<springfox.documentation.swagger.web.SwaggerResource>> springfox.documentation.swagger.web.ApiResourceController.swaggerResources()
    [INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/swagger-resources/configuration/security]}" onto org.springframework.http.ResponseEntity<springfox.documentation.swagger.web.SecurityConfiguration> springfox.documentation.swagger.web.ApiResourceController.securityConfiguration()
    [INFO ] 2018-01-17 16:46:37.055 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
    [INFO ] 2018-01-17 16:46:37.071 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
    [INFO ] 2018-01-17 16:46:37.227 [restartedMain] o.s.w.s.m.m.a.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5e89f6: startup date [Wed Jan 17 16:46:34 CST 2018]; root of context hierarchy
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
    [WARN ] 2018-01-17 16:46:42.217 [http-nio-8082-exec-1] o.s.w.s.PageNotFound - No mapping found for HTTP request with URI [/example/swagger-ui.html] in DispatcherServlet with name 'dispatcherServlet'
Run Code Online (Sandbox Code Playgroud)
    小智 22
对于新的 Springfox 版本(3.0.0),您需要做一些不同的事情
在 pom.xml 中添加以下依赖项
*
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
而不是两个 for
 <artifactId>springfox-swagger2</artifactId>  and
<artifactId>springfox-swagger-ui</artifactId>
并访问 ../swagger-ui/ 而不是 ../swagger-ui.html
我发现了问题所在,在其中一个配置文件中,我以某种方式具有 @EnableMvc 注释,因为 dispatcherservlet 正在寻找映射 /example/swagger-ui.html 并且由于找不到映射,因此它抱怨“没有映射成立”。
删除@EnableMvc 后,它工作得很好。
小智 6
对于像我这样仍然出现“白标”页面错误的其他人,请检查您是否有:
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.8.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
在您的pom.xml文件中,不仅需要官方文档页面显示的“springfox-swagger2”依赖项,您还需要“springfox-swagger-ui”。
小智 6
我遇到了同样的问题。所以基本上如果你使用 spring 3 或更高版本然后打开 swagger 页面,你只需要做 3 件事。
在pom.xml中添加3个依赖
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2 </artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
创建一个配置文件。
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spring.web.plugins.Docket;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 @Configuration
 @EnableSwagger2
 public class SwaggerConfig {
    @Bean
    public Docket api() {
       return new Docket(DocumentationType.SWAGGER_2);    
 }    
Run Code Online (Sandbox Code Playgroud)
}
打开此链接以访问 API。
http://localhost:8080/swagger-ui/
现在只需匹配您错过的步骤即可。如果你被困在某个地方,一定要问一下。
小智 5
我英语不好,所以才用谷歌翻译。
\n\n那个版本和实现方式已经有点过时了,如果你希望自动生成文档,SpringDoc 简化了 API 文档的生成和维护,基于 OpenAPI 3 规范,适用于 Spring Boot 1.x 和 2.x 。应用程序。
\n\n为了让魔法发生,我们只需将依赖项添加到我们的 pom 中:
\n\n\n\n    <dependency>\n        <groupId>org.springdoc</groupId>\n        <artifactId>springdoc-openapi-ui</artifactId>\n        <version>1.2.32</version>\n    </dependency>\n\nRun Code Online (Sandbox Code Playgroud)\n\n然后访问已有的描述http://localhost:8080/v3/api-docs/
\n\n对于招摇来说: http://localhost:8080/swagger-ui.html
\n\n这里的所有都是它的。
\n\n了解更多详情
\n\n如果你想自定义 api 信息,你可以包含 java 风格的注释:
\n\n\n\n    @OpenAPIDefinition(\n        info = @Info(\n                 title = "API personas", \n                 description = "Este es un ejemplo de servidor Personas-Server."\n            + "Usted puyede encontrar mas acerca de Swagger " ++"[http://swagger.io](http://swagger.io) o en "\n            + "[irc.freenode.net, #swagger](http://swagger.io/irc/).",\n            termsOfService = "http://swagger.io/terms/", \n              license = @License(\n                          name = "Apache 2.0", \n                          url = "http://springdoc.org"), \n       version = "otra"\n    ))\n    @Tag(name = "persona", description = "API para personas")\n    @RestController\n    @RequestMapping("persona")\n    public class PersonaRest extends GeneralRest {}\n\nRun Code Online (Sandbox Code Playgroud)\n\n也可以为特殊方法生成:
\n\n\n\n     @Operation(\n         summary = "traer todas las personas", \n         description = "api para traer todas las personas, aqui no se tienen en cuenta paginaciones, ni filtros, trae todos los registros", \n         tags = { "persona" }\n         )\n     @ApiResponses(\n         value = {\n         @ApiResponse(\n             responseCode = "200", \n             description = "Operaci\xc3\xb3n exitosa", \n             content = @Content(\n                 mediaType = "application/json", \n                 array = @ArraySchema(\n                     schema = @Schema(\n                         implementation = PersonaTO.class\n                         )))),\n         @ApiResponse(\n             responseCode = "401", \n             description = "Sin autorizaci\xc3\xb3n", \n             content = @Content(\n                 mediaType = "application/json", \n                 schema = @Schema(\n                     implementation = Object.class\n                     ))),\n     })\n     @GetMapping\n     public List personas() {\n            return personaServicio.obtenerTodo();\n        }\nRun Code Online (Sandbox Code Playgroud)\n\n使用最新的库和包含内容始终是一个好习惯。
\n|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           17942 次  |  
        
|   最近记录:  |