SpringBoot项目中使用swagger-ui2
1、依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
2、配置类(与启动类同级)
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2
@Configuration
public class SwaggerApp extends WebMvcConfigurationSupport
{
@Bean
public Docket createRestApi()
{
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.app")).paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo()
{
return new ApiInfoBuilder().title("宇通数据对接")
.contact(new Contact("ZEMSO", "http://www.zemso.com/", ""))
.version("1.0")
.description("宇通数据对接测试")
.build();
}
// 设置放开swagger2静态资源访问路径
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/").setCachePeriod(0);
}
}
3、接口注解
// 单个参数
@ApiOperation(value = "接口名", notes = "接口信息")
@ApiImplicitParam(name = "userId", required = false, dataType = "java.lang.Long", value = "用户id", paramType = "query")
// ...
// 多个参数
@ApiOperation(value = "接口名", notes = "接口信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", required = false, dataType = "java.lang.Long", value = "用户id", paramType = "query"),
@ApiImplicitParam(name = "customerId", required = false, dataType = "java.lang.Long", value = "客户id", paramType = "query")
})
4、 @ApiImplicitParam参数详情
name:参数
value:参数名
required:是否必填(true/false)
dataType:参数数据类型
java.lang.Long/java.lang.String等
List<Long>代表参数可多个,传参时多个值,隔开即可
paramType:接口参数类型
path:地址参数
query:参数映射绑定
body:post请求,流的形式
header:参数在request header中
form: post请求,form表单形式
5、swagger-ui2接口api路径
http://ip:port/swagger-ui.html
注意:若项目使用war包部署或配置了content-path属性则访问路径需要加一层
例如项目名project,则访问路径为:
http://ip:port/project/swagger-ui.html