Swagger——【SpringBoot集成Swagger、配置Swagger、配置扫描接口、配置API分组】

简介: Swagger——【SpringBoot集成Swagger、配置Swagger、配置扫描接口、配置API分组】

目录


一、swagge简介


二、SpringBoot集成Swagger


三、配置Swagger


四、配置扫描接口


五、配置Swagger开关


六、配置API分组


七、实体配置


八、总结:


一、swagge简介

前后端分离:


       后端︰后端控制层,服务层,数据访问层【后端团队】


       前端:前端控制层,视图层【前端团队】


       前后端通过API进行交互


       前后端相对独立且松耦合


产生问题:前后端集成,前端或者后端无法做到“及时协商,尽早解决”,最终导致问题集中爆发


解决方法:首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险


前后端分离:       前端测试后端接口:postman

                             后端提供接口,需要实时更新最新的消息及改动!


Swagger


号称世界上最流行的API框架


Restful Api 文档在线自动生成器 => API 文档 与API 定义同步更新


直接运行,在线测试API


支持多种语言 (如:Java,PHP等)


官网:API Documentation & Design Tools for Teams | Swagger

image.png

二、SpringBoot集成Swagger

1、新建一个SpringBoot-web项目

2、添加Maven依赖

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.9.2</version>
</dependency>

3、编写HelloController,测试确保运行成功!

image.png

4、要使用Swagger,我们需要编写一个配置类-SwaggerConfig来配置 Swagger

@Configuration
@EnableSwagger2        //开启Swagger2
public class SwaggerConfig {
}

5.访问测试 :http://localhost:8081/swagger-ui.html,可以看到swagger的界面;

image.png

三、配置Swagger

1、Swagger实例Bean是Docket,所以通过配置Docket实例来配置Swaggger。

//配置了Swagger的Docket的bean实例
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2);
    }

2、可以通过apiInfo()属性配置文档信息

    //配置文档信息
    private ApiInfo apiInfo() {
        Contact contact = new Contact("龍弟", "https://blog.csdn.net/weixin_48838340", "联系人邮箱");
        return new ApiInfo(
                "龍弟的Swagger学习文档", // 标题
                "学习演示如何配置Swagger", // 描述
                "v1.0", // 版本
                "https://blog.csdn.net/weixin_48838340", // 组织链接
                contact, // 联系人信息
                "Apach 2.0 许可", // 许可
                "许可链接", // 许可连接
                new ArrayList<>()// 扩展
        );
    }
}

3、Docket 实例关联上 apiInfo()

    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
    }

4.重启项目

image.png

四、配置扫描接口

   构建Docket时通过select()方法配置怎么扫描接口。

    //配置了Swagger的Docket的bean实例
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
                  //any() // 扫描所有,项目中的所有接口都会被扫描到
                 // none() // 不扫描接口
        // withMethodAnnotation通过方法上的注解扫描,如withMethodAnnotation(GetMapping.class)只扫描get请求
        // 通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                //path()  过滤什么路径
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    };

五、配置Swagger开关

1、通过enable()方法配置是否启用swagger

    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(false) //配置是否启用Swagger,如果是false,在浏览器将无法访问
                .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                // 配置如何通过path过滤,即这里只扫描请求以/longdi开头的接口
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    }

2.如何动态配置当项目处于test、dev环境时显示swagger

    @Bean
    public Docket docket(Environment environment) {
        // 设置要显示swagger的环境
        Profiles of = Profiles.of("dev", "test");
        // 判断当前是否处于该环境
        // 通过 enable() 接收此参数判断是否要显示
        boolean b = environment.acceptsProfiles(of);
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(b) //配置是否启用Swagger,如果是false,在浏览器将无法访问
                .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
                .apis(RequestHandlerSelectors.basePackage("com.longdi.swagger.controller"))
                // 配置如何通过path过滤,即这里只扫描请求以/longdi开头的接口
                .paths(PathSelectors.ant("/longdi/**"))
                .build();
    }

六、配置API分组

1.如果没有配置分组,默认是default。通过groupName()方法即可配置分组:

    @Bean
    public Docket docket1(Environment environment) {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .groupName("A") ;// 配置分组
        // 省略配置....
    }

2.配置多个分组只需要配置多个docket即可

image.png

3.重启看到下面效果

image.png

七、实体配置

1.新建一个实体类

@ApiModel为类添加注释

@ApiModelProperty为类属性添加注释

image.png

2.只要这个实体在请求接口的返回值上(即使是泛型),都能映射到实体项中:

    //只要我们的接口中,返回值中存在实体类,它就会被扫描到Swagger中
    @PostMapping(value="/user")
    public User getUser(){
        return new User();
    }

3.查看效果

image.png

4.可以给请求的接口配置一些注释

    //Operation接口,不是放在类上的,是方法
    @ApiOperation("龍弟的接口")
    @GetMapping("/hello2")
    public String kuang(@ApiParam("这个名字会被返回")String username){
        return "hello"+username;
    }

image.png

八、总结:


1.我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息


2接口文档实时更新

3.可以在线测试


 Swagger是一个优秀的工具,几乎所有大公司都有使用它


【注意点】在正式发布的时候,需要关闭Swagger! 因为出于安全考虑,同时节省运行的内存!


相关文章
|
11月前
|
安全 API 数据安全/隐私保护
低代码革命:API无代码集成如何让企业“3天上线一个生态”?
在数字化转型浪潮中,API成为释放数据价值、提升企业效率的核心。本文详解API架构设计、安全实践与跨平台集成,为CTO提供效率提升指南,涵盖微服务、安全认证、协议选择、低代码集成及未来趋势,助力企业构建敏捷、安全、高效的数字生态。
|
11月前
|
消息中间件 安全 数据可视化
降本增效新引擎:API集成如何让电商订单履约快人一步?
本文详解电商系统如何通过API与支付、物流、CRM三大第三方服务高效集成,涵盖技术实现、应用场景与商业价值,助力企业构建数字化竞争力。
|
11月前
|
监控 前端开发 安全
如何集成第三方支付API到电商网站
在电商网站中,集成第三方支付API是确保交易安全、提升用户体验的关键步骤。本文详细介绍了从选择支付提供商到上线监控的全流程,涵盖代码示例与实用建议,助您高效实现支付功能。
|
11月前
|
监控 测试技术 API
电商API常见错误排查指南:避免集成陷阱
API集成是电商开发的核心,但常因认证、数据、限流等问题引发错误,影响项目进度与用户体验。本文详解常见错误类型、排查步骤与预防策略,结合Python示例指导开发者高效应对。通过日志分析、数据校验、速率监控等手段,帮助您系统化规避集成陷阱,提升开发效率与系统稳定性。
|
11月前
|
缓存 监控 安全
电商API集成入门:从零开始搭建高效接口
在数字化电商时代,API集成成为企业提升效率、实现系统互联的关键。本文从零开始,逐步讲解如何搭建高效、可靠的电商API接口,适合初学者学习。内容涵盖API基础、认证安全、请求处理、性能优化等核心步骤,并提供Python代码示例与数学公式辅助理解。通过实践,读者可掌握构建优质电商API的技巧,提升用户体验与系统性能。
|
11月前
|
安全 数据安全/隐私保护
SAP集成HTTP接口(x-www-form-urlencoded格式)
实现这一过程时,务必遵循最佳实践,包括确保代码的稳定性、考虑到异常处理和系统资源的优化使用。这样做不仅能确保数据的安全和有效性,还能提高系统集成的效率和可靠性。
677 4
|
11月前
|
供应链 小程序 API
微信小程序API集成京东库存,移动端销量暴涨!
在数字化时代,微信小程序与京东库存系统集成成为提升移动端销量的关键策略。本文详解如何通过API实现库存实时同步、优化用户体验,推动销量增长50%以上,并结合实际案例与代码示例,为企业提供可落地的解决方案。
|
11月前
|
JSON 监控 供应链
京东API集成订单系统,处理速度提升50%!
在电商竞争激烈的今天,高效订单处理至关重要。本文详解如何通过京东API集成,将订单处理速度提升50%,助力商家优化系统性能、提升客户满意度。
|
人工智能 运维 关系型数据库
云服务API与MCP深度集成,RDS MCP最佳实践
近日,阿里云数据库RDS发布开源RDS MCP Server,将复杂的技术操作转化为自然语言交互,实现"对话即运维"的流畅体验。通过将RDS OpenAPI能力封装为MCP协议工具,用户只需像聊天一样描述需求,即可完成数据库实例创建、性能调优、故障排查等专业操作。本文介绍了RDS MCP(Model Context Protocol)的最佳实践及其应用,0代码,两步即可轻松完成RDS实例选型与创建,快来体验!
云服务API与MCP深度集成,RDS MCP最佳实践
|
11月前
|
人工智能 数据可视化 BI
【2025】项目管理API集成工具指南:提升协作效率的17个必备模块
项目管理API集成工具通过连接不同平台,实现数据自动同步与流程自动化,提升团队协作效率。它支持跨系统操作,如任务同步、文档生成及可视化报表,减少人为错误,增强信息流通。随着技术发展,这类工具在企业数字化转型中扮演关键角色。
644 0