Swagger 入门

Scroll Down

swagger 入门

官方网站: https://swagger.io/

导入Maven依赖

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>

在Spring Boot中使用Swagger

Swagger配置类

新建一个配置类,我这里取名SwaggerConfig

@Configuration
public class SwaggerConfig {

}

这里先不写一些东西,先打开看看效果

但是要先启用Swagger

在主配置类,也就是启动类上加上@EnableSwagger2

否则在获取环境的时候会报错

访问

项目路径/swagger-ui.html

添加配置

Swagger的核心配置是

Docket,我们需要在配置中创建一个Bean

@Bean
public Docket docket(@Autowired @Qualifier("apiInfo") ApiInfo apiInfo)
{
    Docket docket = new Docket(DocumentationType.SWAGGER_2);
    docket.apiInfo(apiInfo);
    return docket;
}

@Bean(name="apiInfo")
public ApiInfo apiInfo()
{
    return new ApiInfo("Lucas API INFO",
            "这是神奇的描述",
            "1.0",
            "lucasgao.cn",
            new Contact("lucas","lucasgao.cn","1340052664@qq.com"),
            "Apache 2.0",
            "http://www.apache.org/licenses/LICENSE-2.0",
            new ArrayList());
}

我们还可以创建一个描述,apiInfo,自己定制一些就行了

详细配置(配置扫描接口)

@Bean
public Docket docket(@Autowired @Qualifier("apiInfo") ApiInfo apiInfo)
{
    Docket docket = new Docket(DocumentationType.SWAGGER_2);
    docket.apiInfo(apiInfo).
        	//如果为false就禁用
        	enable(false).
            select().
        	//配置要扫描接口的方式
        	//basePackage:指定要扫描的包
        	//any:全部扫描
        	//none:不扫描
        	//withClassAnnotation:扫描类上的注解
            apis(RequestHandlerSelectors.any()).
        	//过滤的路径
        	//只扫描lucas下面的接口
        	path(PathSelectors.ant("/lucas/**")).
            build();
    return docket;
}

给代码加上@API

给模型加上@API

@ApiModel("用户实体类")
public class User {
    @ApiModelProperty("用户名")
    private String name;
    @ApiModelProperty("密码")
    private String password;
    @ApiModelProperty("用户编号")
    private int id;
}

只要接口的返回值中存在实体类就会被扫描到

给Controller加上API

@PostMapping("/testUser")
@ResponseBody
@ApiOperation("测试用户")
public User test()
{
    return new User();
}