springboot的WEB开发笔记(swagger)

springboot的WEB开发(swagger)

  • swagger
    • Springboot集成Swagger2
    • Springboot集成Swagger3
    • 配置swagger页面的基本信息
    • Swagger配置文档分组
    • Swagger配置实体类扫描注释
    • Swagger配置控制类注释

swagger

官网:https://swagger.io/

Springboot集成Swagger2

Swagger2

①导入依赖


    io.springfox
    springfox-swagger2
    3.0.0


    io.springfox
    springfox-swagger-ui
    3.0.0

②没有启动器的swagger是运行不了的,所以依旧要进行配置

@Configuration
@EnableSwagger2
public class SwaggerConfig {
}

③测试地址:http://localhost:8080/swagger-ui.html

Springboot集成Swagger3

①导入依赖

<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger2artifactId>
    <version>3.0.0version>
    <scope>compilescope>
dependency>
<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-swagger-uiartifactId>
    <version>3.0.0version>
    <scope>compilescope>
dependency>
<dependency>
    <groupId>io.springfoxgroupId>
    <artifactId>springfox-boot-starterartifactId>
    <version>3.0.0version>
dependency>

②因为Swagger3已经是依靠springfox-boot-starter启动器启动所以不用配置启动,只需要在应用类直接加@EnableOpenApi

@EnableOpenApi
@SpringBootApplication
public class SwaggerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SwaggerApplication.class, args);
    }

}

③测试地址:http://localhost:8080/swagger-ui/index.html

配置swagger页面的基本信息

DocumentationType.OAS_30/SWAGGER_2,不同版本swagger用不同类型但配置方式相同

@Configuration
public class SwaggerConfig {
    @Bean
    public Docket docket(Environment environment){
        //设置允许swagger启动的profiles
        Profiles profiles= Profiles.of("dev");
        //再利用接受到的环境profiles进行判断是否存在返回true|false
        boolean b = environment.acceptsProfiles(profiles);
        return new Docket(DocumentationType.OAS_30)
                .apiInfo(apiInfo())
                 // enable对swagger的启动/关闭
                .enable(b)
                .select()
                /**
                 * RequestHandlerSelectors配置扫描接口的方式
                 * basePackage:基本扫描包
                 * any:是扫描全部
                 * none:不扫描
                 * withMethodAnnotation:扫描方法上的注解
                 * withClassAnnotation:扫描类上的注解,参数是一个注解的反射
                 */
                .apis(RequestHandlerSelectors.basePackage("com.swagger.controller"))
                //过滤什么路径
                .paths(PathSelectors.ant("/*"))
                .build();
    }
    private ApiInfo apiInfo(){
        return new ApiInfo(
                "我的swagger日记",
                "Api Documentation",
                "1.0",
                "https://www.baidu.com/",
                new Contact("张三", "https://www.baidu.com/", "[email protected]"),
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}

Swagger配置文档分组

@Bean
public Docket docket1(){
   return new Docket(DocumentationType.SWAGGER_2).groupName("group1");
}
@Bean
public Docket docket2(){
   return new Docket(DocumentationType.SWAGGER_2).groupName("group2");
}

多人协作需要多个docket实例就可以进行分组了

Swagger配置实体类扫描注释

只有接口中返回值存在实体类,swagger就会扫描该实体类

对实体类进行注释

@ApiModel("用户实体类")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @ApiModelProperty("用户名")
    private String username;
    @ApiModelProperty("密码")
    private String password;
}

Swagger配置控制类注释

@Api(tags="用户管理")
@RestController
public class HelloController {
    @ApiOperation("创建用户")
    @GetMapping("/hello")
    public String hello(@ApiParam("用户名") String username){
        return "hello"+username;
    }
}

你可能感兴趣的:(java,spring,boot)