当前位置:   article > 正文

SpringBoot配置Swagger接口文档及美化增强依赖_springboot swagger 美化

springboot swagger 美化

Swagger2、Swagger-UI、Bootstrap-UI、Knife4j接口文档各个界面的对比和如何配置

目录

一、Swagger-UI、Bootstrap-UI、Knife4j接口文档界面对比

1.Swagger-UI  

2. Bootstrap-UI

3.Knife4j

二、配置不同Swagger接口文档

两个步骤:

1.导入相关依赖

2.导入配置类

1.fox-swagger2+swagger-ui的配置

2.fox-swagger2+bootstrap-ui的配置

3.knife4j的配置

三、访问接口文档地址

参考一、中不同接口文档的访问地址,这里以2.Bootstrap-UI的访问地址为例:

假如我后端服务器的端口号为:localhost:8090

那么接口文档的访问地址为:http://localhost:8090/doc.html

PS:如果配置Swagger后启动后端报错可以参考我这篇文章:

续:Swagger常用注解的使用

1.@Api

2.@ApiOperation

3.@ApiModel

4.@ApiModelProperty


一、Swagger-UI、Bootstrap-UI、Knife4j接口文档界面对比

1.Swagger-UI  

访问地址:http://ip:port/swagger-ui.html

530751bf021c4f558f758c2db93a653e.png

a9baf4eac52d492eb2d1d58174be43ad.png

2. Bootstrap-UI (个人推荐这个接口文档页面,比较简洁美观)

访问地址:http://ip:port/doc.html

c16020a8941c498c8b654fed7fd1e185.png

fa3ac69b0a38412e933bac58e7a99770.png

45eef4b845b54d69b72284079f6f409f.png

3.Knife4j

访问地址:http://ip:port/doc.html

0a76adb9bb2844459d672b6c5ccea26c.png

78863bbdf29746f5869bfa37bfeabb25.png

7eac970735834c1c86f4a5f421ff400f.png

112f0239a4974bb192065e7223c4b8f4.png

二、配置不同Swagger接口文档

那么该如何配置Swagger接口文档呢?

两个步骤:

1.导入相关依赖

2.导入配置类

1.fox-swagger2+swagger-ui的配置

先在pom.xml里面导入依赖

  1. </dependency>
  2. <groupId>io.springfox</groupId>
  3. <artifactId>springfox-swagger-ui</artifactId>
  4. <version>2.9.2</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>io.springfox</groupId>
  8. <artifactId>springfox-swagger2</artifactId>
  9. <version>2.9.2</version>
  10. </dependency>

然后拷贝这个SwaggerConfig类到config包里面(可以自己新建一个config文件夹

  1. import org.springframework.context.annotation.Bean;
  2. import org.springframework.context.annotation.Configuration;
  3. import springfox.documentation.builders.ApiInfoBuilder;
  4. import springfox.documentation.builders.PathSelectors;
  5. import springfox.documentation.builders.RequestHandlerSelectors;
  6. import springfox.documentation.oas.annotations.EnableOpenApi;
  7. import springfox.documentation.service.ApiInfo;
  8. import springfox.documentation.service.Contact;
  9. import springfox.documentation.spi.DocumentationType;
  10. import springfox.documentation.spring.web.plugins.Docket;
  11. @Configuration
  12. @EnableOpenApi
  13. public class SwaggerConfig {
  14. /**
  15. * 创建API应用
  16. * apiInfo() 增加API相关信息
  17. * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
  18. * 本例采用指定扫描的包路径来定义指定要建立API的目录。
  19. *
  20. * @return
  21. */
  22. @Bean
  23. public Docket restApi() {
  24. return new Docket(DocumentationType.SWAGGER_2)
  25. .groupName("标准接口")
  26. .apiInfo(apiInfo("Spring Boot中使用Swagger2构建RESTful APIs", "1.0"))
  27. .useDefaultResponseMessages(true)
  28. .forCodeGeneration(false)
  29. .select()
  30. .apis(RequestHandlerSelectors.basePackage("com.xxx.springboot.controller"))
  31. .paths(PathSelectors.any())
  32. .build();
  33. }
  34. /**
  35. * 创建该API的基本信息(这些基本信息会展现在文档页面中)
  36. * 访问地址:http://ip:port/swagger-ui.html
  37. *
  38. * @return
  39. */
  40. private ApiInfo apiInfo(String title, String version) {
  41. return new ApiInfoBuilder()
  42. .title(title)
  43. .description("")
  44. .version(version)
  45. .build();
  46. }
  47. }

注意:这个代码中需要更改:

.apis(RequestHandlerSelectors.basePackage("com.xxx.springboot.controller"))

为你自己项目的controller类所在文件夹的路径

2.fox-swagger2+bootstrap-ui的配置

同理:先在pom.xml里面导入相关依赖 

  1. <!--swagger2-->
  2. <dependency>
  3. <groupId>io.springfox</groupId>
  4. <artifactId>springfox-swagger2</artifactId>
  5. <version>2.7.0</version>
  6. </dependency>
  7. <!-- swagger文档增强工具Bootstrap-UI-->
  8. <dependency>
  9. <groupId>com.github.xiaoymin</groupId>
  10. <artifactId>swagger-bootstrap-ui</artifactId>
  11. <version>1.9.6</version>
  12. </dependency>

然后拷贝配置类 同理也需要改为自己的controller类的路径

  1. import org.springframework.context.annotation.Bean;
  2. import org.springframework.context.annotation.Configuration;
  3. import springfox.documentation.builders.ApiInfoBuilder;
  4. import springfox.documentation.builders.PathSelectors;
  5. import springfox.documentation.builders.RequestHandlerSelectors;
  6. import springfox.documentation.service.ApiInfo;
  7. import springfox.documentation.service.Contact;
  8. import springfox.documentation.spi.DocumentationType;
  9. import springfox.documentation.spring.web.plugins.Docket;
  10. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  11. /**
  12. * Swagger 美化页doc.html配置
  13. *
  14. * @author zxt
  15. * @since 1.0.0
  16. */
  17. @Configuration
  18. @EnableSwagger2
  19. public class SwaggerConfig {
  20. /**
  21. * 创建API应用
  22. * apiInfo() 增加API相关信息
  23. * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
  24. * 本例采用指定扫描的包路径来定义指定要建立API的目录。
  25. *
  26. * @return
  27. */
  28. @Bean
  29. public Docket restApi() {
  30. return new Docket(DocumentationType.SWAGGER_2)
  31. .groupName("标准接口")
  32. .apiInfo(apiInfo("系统", "1.0"))
  33. .useDefaultResponseMessages(true)
  34. .forCodeGeneration(false)
  35. .select()
  36. .apis(RequestHandlerSelectors.basePackage("com.dormitory.controller"))
  37. .paths(PathSelectors.any())
  38. .build();
  39. }
  40. /**
  41. * 创建该API的基本信息(这些基本信息会展现在文档页面中)
  42. * 访问地址:http://ip:port/doc.html
  43. *
  44. * @return
  45. */
  46. private ApiInfo apiInfo(String title, String version) {
  47. return new ApiInfoBuilder()
  48. .title(title)
  49. .description("系统接口文档---Swagger2+Bootstrap-UI")
  50. .contact(new Contact("name", "url", "e-mail"))
  51. .version(version)
  52. .build();
  53. }
  54. }

3.knife4j的配置

先在pom.xml里面导入依赖

  1. <!-- knife4j-->
  2. <dependency>
  3. <groupId>com.github.xiaoymin</groupId>
  4. <artifactId>knife4j-spring-boot-starter</artifactId>
  5. </dependency>

然后拷贝配置类  同理也需要改为自己的controller类的路径(本类是在注册拦截器的前提下,所以需要静态资源映射)

  1. import com.xxx.interceptor.JwtTokenAdminInterceptor;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  7. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  8. import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
  9. import springfox.documentation.builders.ApiInfoBuilder;
  10. import springfox.documentation.builders.PathSelectors;
  11. import springfox.documentation.builders.RequestHandlerSelectors;
  12. import springfox.documentation.service.ApiInfo;
  13. import springfox.documentation.spi.DocumentationType;
  14. import springfox.documentation.spring.web.plugins.Docket;
  15. /**
  16. * 配置类,注册web层相关组件
  17. */
  18. @Configuration
  19. @Slf4j
  20. public class WebMvcConfiguration extends WebMvcConfigurationSupport {
  21. @Autowired
  22. private JwtTokenAdminInterceptor jwtTokenAdminInterceptor;
  23. /**
  24. * 注册自定义拦截器
  25. *
  26. * @param registry
  27. */
  28. protected void addInterceptors(InterceptorRegistry registry) {
  29. log.info("开始注册自定义拦截器...");
  30. registry.addInterceptor(jwtTokenAdminInterceptor)
  31. .addPathPatterns("/admin/**")
  32. .excludePathPatterns("/admin/employee/login");
  33. }
  34. /**
  35. * 通过knife4j生成接口文档
  36. * @return
  37. * 访问地址:http://ip:port/doc.html
  38. */
  39. @Bean
  40. public Docket docket() {
  41. log.info("准备生成接口文档...");
  42. ApiInfo apiInfo = new ApiInfoBuilder()
  43. .title("标题")
  44. .version("2.0")
  45. .description("简介")
  46. .build();
  47. Docket docket = new Docket(DocumentationType.SWAGGER_2)
  48. .apiInfo(apiInfo)
  49. .select()
  50. .apis(RequestHandlerSelectors.basePackage("com.xxx.controller")) //controller类所在的地址
  51. .paths(PathSelectors.any())
  52. .build();
  53. return docket;
  54. }
  55. /**
  56. * 设置静态资源映射
  57. * @param registry
  58. */
  59. protected void addResourceHandlers(ResourceHandlerRegistry registry) {
  60. log.info("开始设置静态资源映射...");
  61. registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
  62. registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
  63. }
  64. }

三、访问接口文档地址

最后配置成功后,如何运行接口文档的界面呢?

参考一、中不同接口文档的访问地址,这里以2.Bootstrap-UI的访问地址为例:

假如我后端服务器的端口号为:localhost:8090

那么接口文档的访问地址为:http://localhost:8090/doc.html

直接在网页上输入就可以访问到啦!

90e5b3c5dec24b8f96f20358bc8b510f.png

PS:如果配置Swagger后启动后端报错可以参考我这篇文章:

[已解决]配置Swagger2后启动项目报错:org.springframework.context.ApplicationContextException: Failed to start...

续:Swagger常用注解的使用

1.@Api

2.@ApiOperation

3.@ApiModel

4.@ApiModelProperty

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/856970
推荐阅读
相关标签
  

闽ICP备14008679号