SwaggerUI的配置
使用SwaggerUI比较直观,可以看到参数和返回值的含义,便于测试和联调。
在工作上第三次遇到构建SwaggerUI了,把过程记录下。
1,引用
Maven:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
Gradle:
compile 'io.springfox:springfox-swagger2:2.9.2'
compile 'com.github.xiaoymin:swagger-bootstrap-ui:1.9.6'
2,配置类:
Swagger2Config
import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
@EnableSwaggerBootstrapUI
public class Swagger2Config {
@Bean
public Docket createRestApi() {
ModelCache.getInstance().setParamClass(GlobalString.class);
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
// .apis(RequestHandlerSelectors.basePackage(OrderReportApplication.class.getPackage().getName()))
.apis(RequestHandlerSelectors.basePackage("com.web.order.ms")).paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("order-report")
.description("Spring Boot中使用Swagger2构建order-report").version("1.0").build();
}
}
说明: RequestHandlerSelectors.basePackage 可以指定包名的位置,也可以使用启动类
WebMvcConfig
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
注意:WebMvcConfig这个就是添加访问doc.html 和 swagger-ui.html,没有的话,会访问不到
3,访问:
启动项目,不报错,然后访问地址:
http://ip:port/doc.html
Swagger:
http://localhost:8081/swagger-ui.html#/
4,总结:
使用swaggerUI,主要是注意配置WebMvcConfig的内容。启动后,访问有问题的话,看下具体的错误,再针对处理就行。一般这样配置下来都没啥问题。