赞
踩
Swagger2、Swagger-UI、Bootstrap-UI、Knife4j接口文档各个界面的对比和如何配置
目录
一、Swagger-UI、Bootstrap-UI、Knife4j接口文档界面对比
2.fox-swagger2+bootstrap-ui的配置
参考一、中不同接口文档的访问地址,这里以2.Bootstrap-UI的访问地址为例:
那么接口文档的访问地址为:http://localhost:8090/doc.html
PS:如果配置Swagger后启动后端报错可以参考我这篇文章:
访问地址:http://ip:port/swagger-ui.html
访问地址:http://ip:port/doc.html
访问地址:http://ip:port/doc.html
那么该如何配置Swagger接口文档呢?
先在pom.xml里面导入依赖
- </dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger-ui</artifactId>
- <version>2.9.2</version>
- </dependency>
-
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger2</artifactId>
- <version>2.9.2</version>
- </dependency>
然后拷贝这个SwaggerConfig类到config包里面(可以自己新建一个config文件夹)
-
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import springfox.documentation.builders.ApiInfoBuilder;
- import springfox.documentation.builders.PathSelectors;
- import springfox.documentation.builders.RequestHandlerSelectors;
- import springfox.documentation.oas.annotations.EnableOpenApi;
- import springfox.documentation.service.ApiInfo;
- import springfox.documentation.service.Contact;
- import springfox.documentation.spi.DocumentationType;
- import springfox.documentation.spring.web.plugins.Docket;
-
- @Configuration
- @EnableOpenApi
- public class SwaggerConfig {
-
-
- /**
- * 创建API应用
- * apiInfo() 增加API相关信息
- * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
- * 本例采用指定扫描的包路径来定义指定要建立API的目录。
- *
- * @return
- */
- @Bean
- public Docket restApi() {
- return new Docket(DocumentationType.SWAGGER_2)
- .groupName("标准接口")
- .apiInfo(apiInfo("Spring Boot中使用Swagger2构建RESTful APIs", "1.0"))
- .useDefaultResponseMessages(true)
- .forCodeGeneration(false)
- .select()
- .apis(RequestHandlerSelectors.basePackage("com.xxx.springboot.controller"))
- .paths(PathSelectors.any())
- .build();
- }
-
- /**
- * 创建该API的基本信息(这些基本信息会展现在文档页面中)
- * 访问地址:http://ip:port/swagger-ui.html
- *
- * @return
- */
- private ApiInfo apiInfo(String title, String version) {
- return new ApiInfoBuilder()
- .title(title)
- .description("")
- .version(version)
- .build();
- }
-
- }
为你自己项目的controller类所在文件夹的路径
同理:先在pom.xml里面导入相关依赖
- <!--swagger2-->
- <dependency>
- <groupId>io.springfox</groupId>
- <artifactId>springfox-swagger2</artifactId>
- <version>2.7.0</version>
- </dependency>
- <!-- swagger文档增强工具Bootstrap-UI-->
- <dependency>
- <groupId>com.github.xiaoymin</groupId>
- <artifactId>swagger-bootstrap-ui</artifactId>
- <version>1.9.6</version>
- </dependency>
然后拷贝配置类 同理也需要改为自己的controller类的路径
-
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import springfox.documentation.builders.ApiInfoBuilder;
- import springfox.documentation.builders.PathSelectors;
- import springfox.documentation.builders.RequestHandlerSelectors;
- import springfox.documentation.service.ApiInfo;
- import springfox.documentation.service.Contact;
- import springfox.documentation.spi.DocumentationType;
- import springfox.documentation.spring.web.plugins.Docket;
- import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
- /**
- * Swagger 美化页doc.html配置
- *
- * @author zxt
- * @since 1.0.0
- */
- @Configuration
- @EnableSwagger2
- public class SwaggerConfig {
-
- /**
- * 创建API应用
- * apiInfo() 增加API相关信息
- * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
- * 本例采用指定扫描的包路径来定义指定要建立API的目录。
- *
- * @return
- */
- @Bean
- public Docket restApi() {
- return new Docket(DocumentationType.SWAGGER_2)
- .groupName("标准接口")
- .apiInfo(apiInfo("系统", "1.0"))
- .useDefaultResponseMessages(true)
- .forCodeGeneration(false)
- .select()
- .apis(RequestHandlerSelectors.basePackage("com.dormitory.controller"))
- .paths(PathSelectors.any())
- .build();
- }
-
- /**
- * 创建该API的基本信息(这些基本信息会展现在文档页面中)
- * 访问地址:http://ip:port/doc.html
- *
- * @return
- */
- private ApiInfo apiInfo(String title, String version) {
- return new ApiInfoBuilder()
- .title(title)
- .description("系统接口文档---Swagger2+Bootstrap-UI")
- .contact(new Contact("name", "url", "e-mail"))
- .version(version)
- .build();
- }
- }
先在pom.xml里面导入依赖
- <!-- knife4j-->
- <dependency>
- <groupId>com.github.xiaoymin</groupId>
- <artifactId>knife4j-spring-boot-starter</artifactId>
- </dependency>
然后拷贝配置类 同理也需要改为自己的controller类的路径(本类是在注册拦截器的前提下,所以需要静态资源映射)
-
- import com.xxx.interceptor.JwtTokenAdminInterceptor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
- import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
- import springfox.documentation.builders.ApiInfoBuilder;
- import springfox.documentation.builders.PathSelectors;
- import springfox.documentation.builders.RequestHandlerSelectors;
- import springfox.documentation.service.ApiInfo;
- import springfox.documentation.spi.DocumentationType;
- import springfox.documentation.spring.web.plugins.Docket;
-
- /**
- * 配置类,注册web层相关组件
- */
- @Configuration
- @Slf4j
- public class WebMvcConfiguration extends WebMvcConfigurationSupport {
-
- @Autowired
- private JwtTokenAdminInterceptor jwtTokenAdminInterceptor;
-
- /**
- * 注册自定义拦截器
- *
- * @param registry
- */
- protected void addInterceptors(InterceptorRegistry registry) {
- log.info("开始注册自定义拦截器...");
- registry.addInterceptor(jwtTokenAdminInterceptor)
- .addPathPatterns("/admin/**")
- .excludePathPatterns("/admin/employee/login");
- }
-
- /**
- * 通过knife4j生成接口文档
- * @return
- * 访问地址:http://ip:port/doc.html
- */
- @Bean
- public Docket docket() {
- log.info("准备生成接口文档...");
- ApiInfo apiInfo = new ApiInfoBuilder()
- .title("标题")
- .version("2.0")
- .description("简介")
- .build();
- Docket docket = new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo)
- .select()
- .apis(RequestHandlerSelectors.basePackage("com.xxx.controller")) //controller类所在的地址
- .paths(PathSelectors.any())
- .build();
- return docket;
- }
-
- /**
- * 设置静态资源映射
- * @param registry
- */
- protected void addResourceHandlers(ResourceHandlerRegistry registry) {
- log.info("开始设置静态资源映射...");
- registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
- }
- }
[已解决]配置Swagger2后启动项目报错:org.springframework.context.ApplicationContextException: Failed to start...
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。