• 配置Swagger2生成API接口文档


    配置Swagger2生成API接口文档

    笔记内容来源与尚硅谷教学视频



    文章全文地址:https://blog.csdn.net/cygqtt/article/details/127381440

    ①:配置Swagger2生成API接口文档

    1. 概述

    ​ 前后端分离开发模式中,api文档是最好的沟通方式。Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。及时性 (接口变更后,能够及时准确地通知相关前后端开发人员)规范性 (并且保证接口的规范性,如接口的地址,请求方式,参数及响应格式和错误信息)一致性 (接口信息一致,不会出现因开发人员拿到的文档版本不一致,而出现分歧)可测性 (直接在接口文档上进行测试,以方便理解业务)

    2. 配置Swagger2

    (1)在classRoom_parent下创建子模块common

    在这里插入图片描述

    (2)在common模块引入依赖 并删除common中的src目录

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
            <scope>provided scope>
        dependency>
    
        
        <dependency>
            <groupId>com.baomidougroupId>
            <artifactId>mybatis-plus-boot-starterartifactId>
            <scope>provided scope>
        dependency>
    
        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
        dependency>
    
        
        <dependency>
            <groupId>io.springfoxgroupId>
            <artifactId>springfox-swagger2artifactId>
        dependency>
        <dependency>
            <groupId>io.springfoxgroupId>
            <artifactId>springfox-swagger-uiartifactId>
        dependency>
    
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
        dependency>
    dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    (3)在common下创建子模块service_utils

    在这里插入图片描述

    (4)在service_utils创建swagger2配置类
    在这里插入图片描述

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class Swagger2Config {
        @Bean
        public Docket webApiConfig(){
            return new Docket(DocumentationType.SWAGGER_2)
                    .groupName("ggkt")
                    .apiInfo(webApiInfo())
                    .select()
                    //只显示api路径下的页面
                    //.paths(Predicates.and(PathSelectors.regex("/api/.*")))
                    .build();
        }
    
        private ApiInfo webApiInfo(){
            return new ApiInfoBuilder()
                    .title("网站-API文档")
                    .description("本文档描述了网站微服务接口定义")
                    .version("1.0")
                    .contact(new Contact("it", "http://it.com", "it.com"))
                    .build();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    (5)在service模块引入service_utils依赖

    <dependency>
        <groupId>com.itgroupId>
        <artifactId>service_utilsartifactId>
        <version>0.0.1-SNAPSHOTversion>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (6)在service_vod启动类上添加注解,进行测试
    在这里插入图片描述

    @SpringBootApplication
    @ComponentScan("com.it")
    public class ServiceVodApplication {
        public static void main(String[] args) {
            SpringApplication.run(ServiceVodApplication.class, args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3. 定义接口说明和参数说明

    定义在类上:@Api

    定义在方法上:@ApiOperation

    定义在参数上:@ApiParam

    @Api(tags = "讲师管理接口")
    @RestController
    @RequestMapping(value="/admin/vod/teacher")
    public class TeacherController {
    
        @Autowired
        private TeacherService teacherService;
    
        //删除讲师
        @ApiOperation("逻辑删除讲师")
        @DeleteMapping("{id}")
        public boolean removeById(@ApiParam(name = "id", value = "ID", required = true) @PathVariable String id){
            return teacherService.removeById(id);
        }
    
        //查询所有讲师列表
        @ApiOperation("所有讲师列表")
        @GetMapping("findAll")
        public List<Teacher> findAll(){
            List<Teacher> list = teacherService.list();
            return list;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    4. swagger2测试

    (1)浏览器输入固定地址 http://localhost:8301/swagger-ui.html
    在这里插入图片描述

    (2)测试接口

    在这里插入图片描述

    (3)执行接口

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XkwsjN66-1666072399676)(.\images\image-20220222113736629.png)]
    在这里插入图片描述在这里插入图片描述

  • 相关阅读:
    JVM-Java字节码的组成部分
    flink-cdc同步mysql数据到hbase
    《计算机操作系统-第五章》之线程与多线程模型
    Flutter组件--OverflowBox、SizedOverflowBox(子组件超出父组件裁剪)
    唯品会:高利润,慢增长?
    原始html和vue中使用3dmol js展示分子模型,pdb文件
    SolidWorks弯曲的波纹管制作教程
    什么是线程的拒绝策略&&核心线程数打满后就直接创建新线程吗
    Bert基础(四)--解码器(上)
    Pytorch:张量的索引操作
  • 原文地址:https://blog.csdn.net/cygqtt/article/details/127406232