栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Swagger笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Swagger笔记

Swagger笔记 1、Swagger简介

​ Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。当通过 Swagger 进行正确定义,用户可以理解远程服务并使用最少实现逻辑与远程服务进行交互。与为底层编程所实现的接口类似,Swagger 消除了调用服务时可能会有的猜测。

支持在线同步API文档,不用手动编写API文档。支持Web页面的在线测试API,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。

swagger官网:https://swagger.io/

2、Swagger使用步骤
    导入依赖

    com.spring4all
    swagger-spring-boot-starter
    1.7.1.RELEASE

    配置swagger
@Configuration
@EnableSwagger2  // 开启swagger
public class SwaggerConfig {
    
    // 这样就可以使用swagger的默认配置 
}
    测试:访问localhost:8080/swagger-ui.html就可以访问默认的页面

3、Swagger配置信息
// 配置Docket的相关信息
@Bean
public Docket getDocket(){


    // 文档类型设置为documentationType.SWAGGER_2
    return new Docket(documentationType.SWAGGER_2)
            // 设置对应的swagger的api信息,参数是一个Contact对象
            // 默认是ApiInfo实体类
            .apiInfo(this.getApiInfo());
}

private ApiInfo getApiInfo(){
    // 文档的作者信息
    Contact contact = new Contact("xiaotanke", "http://www.yujiangg.com", "LHJ160414@163.com");
    return new ApiInfo(
            // 题目
            "测试的Swagger文档",
            // 描述
            "这是一个测试api文档",
            // 版本
            "v-1.0",
            // 作者网站
            "http://www.yujiangg.com",
            // 作者的个人信息
            contact,
            // 开源信息
            "Apache 2.0",
            "http://www.apache.org/licenses/LICENSE-2.0",
            new ArrayList()
    );
}
4、Swagger配置扫描

​ swagger默认是扫描项目的全部接口,即扫描项目中的所有controller中的接口,但是我们可以自定义扫描接口。

// 配置Docket的相关信息
    @Bean
    public Docket getDocket(){


        // 文档类型设置为documentationType.SWAGGER_2
        return new Docket(documentationType.SWAGGER_2)
                // 设置对应的swagger的api信息,参数是一个Contact对象
                // 默认是ApiInfo实体类
                .apiInfo(this.getApiInfo())
                // 自定义扫描接口,select()和build()是联合使用的,只能在之间配置
                // 两种方式,选择一种
                .select()
                // apis配置扫描接口范围
                
//                .apis(RequestHandlerSelectors.basePackage("com.xiaotanke.controller"))
                .apis(RequestHandlerSelectors.any())
//                .apis(RequestHandlerSelectors.none())
//                .apis(RequestHandlerSelectors.withMethodAnnotation(RequestMapping.class))
//                .apis(RequestHandlerSelectors.withClassAnnotation(Controller.class))
                // 扫描过滤请求下的接口
                
//                .paths(PathSelectors.ant("/admin
//                .apis(RequestHandlerSelectors.basePackage("com.xiaotanke.controller"))
                .apis(RequestHandlerSelectors.any())
//                .apis(RequestHandlerSelectors.none())
//                .apis(RequestHandlerSelectors.withMethodAnnotation(RequestMapping.class))
//                .apis(RequestHandlerSelectors.withClassAnnotation(Controller.class))
                // 扫描过滤请求下的接口
                
//                .paths(PathSelectors.ant("/admin/**"))
//                .paths(PathSelectors.any())
//                .paths(PathSelectors.none())
//                .paths(PathSelectors.regex("正则字符串"))
                .build();
    }
6、Swagger分组配置

​ 根据API文档生成多个分组,每个组对应自己的文档。多个组实际就是多个Docket对象,每一个Docket对象就是一个组。

// 组名为B
@Bean
public Docket getBDocket(){
    return new Docket(documentationType.SWAGGER_2)
            // 组名
            .groupName("B");
}
// 组名为C
@Bean
public Docket getCDocket(){
    return new Docket(documentationType.SWAGGER_2)
            .groupName("C");
}
// 组名为D
@Bean
public Docket getDDocket(){
    return new Docket(documentationType.SWAGGER_2)
            .groupName("D");
}

7、Swagger注解配置
    实体类注解

当扫描的接口其中一个返回了一个实体对象,那么在swagger的model中就会有对应实体的内容。

// lombok注解
@Data
@AllArgsConstructor
@NoArgsConstructor
// swagger实体的注释,会在swagger中显示
@ApiModel("用户实体类")
public class User {
    // 实体类的字段注释
    @ApiModelProperty("自然主键")
    private Integer id;
    @ApiModelProperty("用户名")
    private String userName;
    @ApiModelProperty("用户密码")
    private String password;
}

    接口注释
@Controller
public class LoginController {


    // @ApiOperation 作用于方法上,注释某一个接口
    // @ApiParam 作用于参数,用作参数的注释
    @ApiOperation("测试接口")
    @GetMapping("/test1")
    public String test1(@ApiParam("用户名参数") String username){
        return username;
    }
}

    接口测试

注释注解在作用上就是一个文档的说明,没有实际 上的作用。增强文档的可读性,也便于测试接口。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/708272.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号