SpringBoot 2 Swagger 2

389 阅读1分钟

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。

官网:springfox.github.io/springfox/d…

构建spring-web或者springboot-web项目:

1.1 引入依赖

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

1.2 配置Swagger 2

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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerApp {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.kenny.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("learning Swagger")
                .description("for swagger only")
                .contact(new Contact("swagger-study","https://localhost:8080","myEmail@gmail.com"))
                .version("0.0.1")
                .build();
    }
}

1.3 访问Swagger ui

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

swaggerui.PNG

2. Swagger核心注解介绍

image-20210608112935733.png

import com.kenny.bean.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import org.springframework.web.bind.annotation.*;

@Api(tags = "my Api")
@RestController
@RequestMapping("/user")
public class UserController {
    @ApiOperation(value = "根据id查询用户信息")
    @ApiImplicitParam(name = "id",value = "user id", required = true,dataType = "Integer")
    @ApiResponse(response = User.class,code = 200,message = "return User")
    @GetMapping("/{id}")
    public User getUser(@PathVariable("id") Integer id) {
        System.out.println("getUser: " + id);
        User user = new User();
        user.setId(id);
        user.setName("name-" + id);
        return user;
    }
}