Swagger自动生成接口文档

本文详细介绍如何在项目中集成Swagger2,通过Springfox实现API文档的自动生成。包括添加依赖、配置Swagger、使用注解及访问方式等内容。

1. 添加依赖

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>

2. 配置Swagger

新建SwaggerConfig.java

package com.pibigstar.common.config;

import io.swagger.annotations.ApiOperation;
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;

/**
 * Swagger配置
 * @author pibigstar
 *
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig{

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo())
            .select()
            //只有加了ApiOperation注解的类,才生成接口文档
            .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
            //包下的类,生成接口文档
            //.apis(RequestHandlerSelectors.basePackage("com.pibigstar.web"))
            .paths(PathSelectors.any())
            .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
            .title("VIP资源解析")
            .description("VIP资源解析文档")
            .termsOfServiceUrl("http://mxspvip.cn")
            .version("1.5.0")
            .build();
    }
}

3. 使用

@Api

用在类上,说明该类的作用

@Controller
@Api(value="VIP视频播放",tags="视频播放接口")
public class ParseVIPController extends BaseController{ }

@ApiOperation

用在方法上,说明方法的作用

@RequestMapping(value="/vip",method=RequestMethod.GET)
@ApiOperation("VIP视频播放")
public ModelAndView play(){}

@ApiParam

用在参数中,说明参数的作用

public MyResponse seach(
@ApiParam(name = "type",value = "类型1:酷狗,2:QQ",required = true)String type,
@ApiParam(name = "music",value = "音乐名",required = true)String music){ }

@ApiImplicitParams

用在方法上,用来说明方法中参数的作用

    @ApiImplicitParams(value = { @ApiImplicitParam(name="url",value="视频地址")})
    public ModelAndView play(String url) { }

@ApiModel

描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)

@ApiModel(value="用户信息")   
public class User {  
    @ApiModelProperty("用户id")  
    private Integer userCode;  
    @ApiModelProperty("用户类型")  
    private String userType;  
    @ApiModelProperty("用户名称")  
    private String userName;  
    @ApiModelProperty("用户手机号")  
    private String mobileNumber;  
}  

@ApiResponses

用在方法上,用来表示一组响应信息

@ApiResponse

用在@ApiResponses中,一般用于表达一个错误的响应信息

code:数字,例如400

message:信息,例如”请求参数没填好”

response:抛出异常的类

4. 访问

http://localhost:8080/swagger-ui.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值