springboot整合swagger2文档

springboot整合swagger2文档

首先创建一个springboot项目,导入web依赖。

新建成功之后再将两个swagger依赖导进去,依赖如下:

<dependency>

    <groupId>io.springfox</groupId>

    <artifactId>springfox-swagger2</artifactId>

    <version>2.9.2</version>

</dependency>

<dependency>

    <groupId>io.springfox</groupId>

    <artifactId>springfox-swagger-ui</artifactId>

    <version>2.9.2</version>

</dependency>

新建Swagger2配置类,通过注解@Configuration注册为Bean让spring管理:

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;

@Configuration

public class Swagger2 {

    @Bean

    public Docket createRestApi() {

        return new Docket(DocumentationType.SWAGGER_2)

                .apiInfo(apiInfo())

                .select()

                .apis(RequestHandlerSelectors.basePackage("com.XXXX.ggfw.dashboard"))

                .paths(PathSelectors.any())

                .build();

    }

    private ApiInfo apiInfo() {

        return new ApiInfoBuilder()

                .title("springboot利用swagger构建api文档")

                .description("这是一个示例")

                .termsOfServiceUrl("http://www.XXXX.com")

                .version("1.0")

                .build();

    }

}

现在springboot整合swagger2已经完成,写一个测试接口测试一下

import io.swagger.annotations.Api;

import io.swagger.annotations.ApiImplicitParam;

import io.swagger.annotations.ApiOperation;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

/**

 * @Author fengz

 * @Date 2020/9/30 11:28

 */

@RestController

@Api

public class test {

    @ApiOperation(value = "测试")

    @ApiImplicitParam(name = "name", value = "姓名", required = true, paramType = "query")

    @GetMapping("/hello")

    public String test(String name){

        return "hello!"+name;

    } }

启动项目,然后浏览器访问 http://localhost:8080/swagger-ui.html#/

springboot整合swagger2文档

至此,springboot整合swagger2流程完成。

说明:根据网上查阅他人总结,整理swagger常用注解如下

swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数

常用的注解和属性有如下:

@Api:用在请求的类上,表示对类的说明

    tags="说明该类的作用,可以在UI界面上看到的注解"

    value="该参数没什么意义,在UI界面上也看到,所以不需要配置"

@ApiOperation:用在请求的方法上,说明方法的用途、作用

    value="说明方法的用途、作用"

    notes="方法的备注说明"

@ApiImplicitParams:用在请求的方法上,表示一组参数说明

    @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面

        name:参数名

        value:参数的汉字说明、解释

        required:参数是否必须传

        paramType:参数放在哪个地方

            · header --> 请求参数的获取:@RequestHeader

            · query --> 请求参数的获取:@RequestParam

            · path(用于restful接口)--> 请求参数的获取:@PathVariable

            · body(不常用)

            · form(不常用)   

        dataType:参数类型,默认String,其它值dataType="Integer"      

        defaultValue:参数的默认值

@ApiResponses:用在请求的方法上,表示一组响应

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

        code:数字,例如400

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

        response:抛出异常的类

@ApiModel:用于响应类上,表示一个返回响应数据的信息

            (这种一般用在post创建的时候,使用@RequestBody这样的场景,

            请求参数无法使用@ApiImplicitParam注解进行描述的时候)

    @ApiModelProperty:用在属性上,描述响应类的属性