Swagger(API框架)

Swagger简介

  1. Api文档在线自动生成工具 ==> Api文档与API定义同步更新
  2. 直接运行,可以在线测试API接口
  3. 支持多种语言

在项目中使用 需要springfox

  • swagger2
  • ui

1、导入maven依赖

 <dependency>
     <groupId>io.springfox</groupId>
     <artifactId>springfox-boot-starter</artifactId>
     <version>3.0.0</version>
 </dependency> 

2、Hello工程

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "hello";
    }
}

3、swagger的Bean配置

@Configuration
@EnableSwagger2
public class SwaggerConfig {
}

4、配置swagger的Docet的Bean实例

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    // 配置了Swagger的Docket的Bean实例
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
    }
    // 配置swapper信息 = apiInfo
    private ApiInfo apiInfo(){
        Contact contact = new Contact("杭州金毅科技", "http://www.jinyi-tech.com/", "");
        return new ApiInfo(
                "标题:Api Documentation"
                , "描述:Api Documentation"
                , "1.0"
                , "http://www.jinyi-tech.com/"
                , contact
                , "Apache 2.0"
                , "http://www.apache.org/licenses/LICENSE-2.0"
                , new ArrayList());
    }
}

5、swagger扫描接口方式

 @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .enable(false)// enable 是否启动swagger false不启动 swagger在浏览器中无法访问
                .select()
                // RequestHandlerSelectors 配置要扫描接口的方式
                // basePackage 指定要扫描的包
                // any 扫描全部
                // none 不扫描
                // withClassAnnotation 扫描类上的注解,参数是一个注解的反射对象
                // withMethodAnnotation 扫描方法上的注解
                .apis(RequestHandlerSelectors.basePackage("com.hzjykj.swagger.controller"))
                // .path() 过滤什么路径
                .build();
    }

6、是否开启swagger(enable)

 // 配置了Swagger的Docket的Bean实例
    @Bean
    public Docket docket(Environment environment){
        // 设置要显示的swagger环境
        Profiles profiles = Profiles.of("dev","test");
        boolean flag = environment.acceptsProfiles(profiles);
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .enable(flag)// enable 是否启动swagger false不启动 swagger在浏览器中无法访问
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.hzjykj.swagger.controller"))
                .build();
    }

7、配置分组

 .groupName("金毅") // 配置API文档的分组

如何配置多个分组

@Bean
    public Docket docket1(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("A");
    }
    @Bean
    public Docket docket2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("B");
    }
    @Bean
    public Docket docket3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("C");
    }

8、注释

  • @ApiModel("用户实体类")
  • @ApiModelProperty("用户名")
  • @ApiOperation("Hello2加用户测试类")
@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(){
        return "hello";
    }

    @PostMapping("/user")
    public User user(){
        return new User();
    }

    @ApiOperation("Hello2加用户测试类")
    @PostMapping("/hello2")
    public String hello2(@ApiParam("用户名") String userName){
        return "hello"+userName;
    }

    @PostMapping("/user2")
    public User user2(User user){
        return user;
    }
}
posted @ 2021-01-18 19:26  zrx001  阅读(204)  评论(0)    收藏  举报