当前位置: 首页 > news >正文

SpringBoot整合Swagger

 一、Swagger简介

Swagger 是一种 API 文档工具,可以通过生成 API 文档来提高开发者的工作效率,同时也可以提高 API 的可读性和可维护性。Spring Boot 可以与 Swagger 进行整合,以方便生成 API 文档。下面介绍一下如何使用 Spring Boot 整合 Swagger 。

Swagger 文档: Annotations · swagger-api/swagger-core Wiki · GitHub

团队协作:Apifox很不错。具体自己去看官网哈:Apifox - API 文档、调试、Mock、测试一体化协作平台。拥有接口文档管理、接口调试、Mock、自动化测试等功能,接口开发、测试、联调效率,提升 10 倍。最好用的接口文档管理工具,接口自动化测试工具。


二、引入 Swagger 依赖:

    	<!-- Swagger -->
        <dependency><!--添加Swagger依赖 -->
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency><!--添加Swagger-UI依赖 -->
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

三、application.yml 配置属性

swagger:
  title: 项目标题
  description: 项目描述
  version: 1.0
  terms-of-service-url: http://www.javastack.cn/
  base-package: com.hzs.demo.controller
  // 项目联系人信息
  contact:
    name: 名称
    url: 网址
    email: 邮箱

四、创建 Swagger 配置类 SwaggerConfig:


@Getter
@Setter
@Configuration //声明该类为配置类
@EnableSwagger2 //启用Swagger
@ConditionalOnClass(EnableSwagger2.class)
@ConfigurationProperties(prefix = "swagger")
public class SwaggerConfig {

    /**
     * API接口包路径
     */
    private String basePackage;

    /**
     * API 页面标题(项目标题)
     */
    private String title;

    /**
     * 项目描述
     */
    private String description;

    /**
     * 服务条款地址
     */
    private String termsOfServiceUrl;

    /**
     * 项目版本号
     */
    private String version;

    /**
     * 联系人
     */
    private Contact contact;

    // Docket 对象配置Swagger
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage(basePackage))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title(title)
                .description(description)
                .termsOfServiceUrl(termsOfServiceUrl)
                .version(version)
                .contact(contact)
                .build();
    }

}

五、常用注解:

注解名称

使用说明

@Api

描述一个 API 类

@ApiImplicitParam

描述一个请求参数

@ApiImplicitParams

描述一组请求参数

@ApiModel

描述一个返回的对象

@ApiModelProperty

描述一个返回的对象参数

@ApiOperation

描述一个 API 方法

@ApiParam

描述一个方法的参数

@ApiResponse

描述一个请求响应

@ApiResponses

描述一组请求响应


六、举例如下:

在web访问层引入Swagger 注解

@Api(description = "测试登录模块")
@RestController
public class HelloController {

    @ApiOperation(value = "登录", httpMethod = "POST")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "username", value = "用户名", dataType = "string", paramType = "query"),
            @ApiImplicitParam(name = "password", value = "密码", dataType = "string", paramType = "query")})
    @PostMapping(value = "/login")
    public Object login(@RequestParam("username") String username, @RequestParam("password") String password) {
        HashMap<String, Object> result = new HashMap<>();
        result.put("code", 200);
        result.put("token", "fwefnsdfnfsjdvns23123");
        result.put("msg", "登录成功");
        // ...
        return result;
    }
}


七、访问:http://localhost:8080/swagger-ui.html

测试是否成功

image.png



八、美化 Swagger-Ui 界面


将上面的两个依赖替换成如下即可。

<dependency>

<groupId>com.github.xiaoymin</groupId>

<artifactId>knife4j-spring-boot-starter</artifactId>

<version>3.0.2</version>

</dependency>

image.png

技术水平有限,如有错误,欢迎指正!

相关文章:

  • 电子电气架构 --- 主机厂电子电气架构演进
  • QT:QPen、QBrush、与图形抗锯齿的关联
  • 线程同步辅助类的使用
  • 4.3MISC流量分析练习-wireshark-https
  • 内网渗透测试-Vulnerable Docker靶场
  • 深入探究OPA1612AIDR:性能剖析、引脚功能、应用实例与注意事项
  • 如何让别人的电脑蓝屏?(没有任何实质性损害,重启后仍然能正常运行;可恶搞)
  • 向量数据库milvus部署
  • Baklib驱动内容中台智能推荐优化
  • 《深度剖析:生成对抗网络中生成器与判别器的高效协作之道》
  • 华为数通Datacom认证体系详解:从HCIA到HCIE的进阶路径
  • 两种常见视频传输线材
  • 如何防止 Instagram 账号被盗用:安全设置与注意事项
  • 学习threejs,Materials常量汇总
  • Linux中Shell运行原理和权限(下)(4)
  • 玄机-第六章 流量特征分析-蚁剑流量分析
  • 软件工程应试复习(考试折磨版)
  • C语言机试编程题
  • 宋朝七律代表作20首
  • 用于训练基于pytorch构建的小型字符级语言模型的数据集汇总
  • 中美经贸高层会谈在瑞士日内瓦开始举行
  • 图集︱“中国排面”威武亮相
  • 上海发布首份直播电商行业自律公约,禁止虚假宣传、商业诋毁
  • 上海杨浦:优秀“博主”购房最高可获200万补贴
  • 马上评|让“贾宝玉是长子长孙”争议回归理性讨论
  • 股价两天涨超30%,中航成飞:不存在应披露而未披露的重大事项