美文网首页基于分布式的医疗挂号系统
分布式医疗挂号系统(三) | 整合Swagger2到通用模块

分布式医疗挂号系统(三) | 整合Swagger2到通用模块

作者: 编程一只蝶 | 来源:发表于2021-04-12 10:18 被阅读0次

    本系列文章介绍从0开始搭建一个基于分布式的医疗挂号系统。本次四篇文章完成了医院设置微服务模块的后端接口,为了方便开发,对接口的返回结果全局异常全局日志进行了统一处理。 同时,为了方便进行访问测试,还整合了Swagger2工具,这些通用的模块中,除了全局日志被放在医院设置微服务模块的配置资源中,其余都统一被抽取在common模块中。具体实现可参考下面文章:

    • 医院设置微服务 | 模块搭建
    • 医院设置微服务 | 接口开发
    • 通用模块 | 整合Swagger2
    • 通用模块 | 统一返回结果、统一异常处理、统一日志处理

    作者:Hudie
    微信公众号/CSDN博客:编程一只蝶
    项目已开源至gitee:https://gitee.com/guo-qianliang/yygh_parent
    项目已开源至github:https://github.com/Guoqianliang/yygh_parent


    在使用REST风格进行接口的开发测试时,post请求无法使用浏览器直接进行访问测试,目前流行的解决方案是使用Swagger2。Swagger2是一个API接口文档,通过Swagger2可以方便各种提交方式的接口测试。

    • 通过Swagger2,我们可以看到接口名称、请求方法、传递参数、返回信息等。

    通用模块整合swagger2步骤

    本项目中,众多的微服务都需要整合Swagger2,所以我将其依赖引入在了通用的common父模块中,配置在common_util模块中。

    1.引入swagger依赖

            <!--swagger-->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
            </dependency>
    

    2.配置Swagger2

    如下的Swagger2配置信息中分别创建了webApi分组和adminApi分组的Bean。

    /**
     * Swagger2配置信息
     */
    @Configuration
    @EnableSwagger2
    public class Swagger2Config {
    
        @Bean
        public Docket webApiConfig() {
    
            return new Docket(DocumentationType.SWAGGER_2)
                    .groupName("webApi")
                    .apiInfo(webApiInfo())
                    .select()
                    //只显示api路径下的页面
                    .paths(Predicates.and(PathSelectors.regex("/api/.*")))
                    .build();
    
        }
    
        @Bean
        public Docket adminApiConfig() {
    
            return new Docket(DocumentationType.SWAGGER_2)
                    .groupName("adminApi")
                    .apiInfo(adminApiInfo())
                    .select()
                    //只显示admin路径下的页面
                    .paths(Predicates.and(PathSelectors.regex("/admin/.*")))
                    .build();
    
        }
    
        private ApiInfo webApiInfo() {
    
            return new ApiInfoBuilder()
                    .title("网站-API文档")
                    .description("本文档描述了网站微服务接口定义")
                    .version("1.0")
                    .contact(new Contact("gql", "http://gql.com", "guoqianliang@foxmail.com"))
                    .build();
        }
    
        private ApiInfo adminApiInfo() {
    
            return new ApiInfoBuilder()
                    .title("后台管理系统-API文档")
                    .description("本文档描述了后台管理系统微服务接口定义")
                    .version("1.0")
                    .contact(new Contact("gql", "http://gql.com", "guoqianliang@foxmail.com"))
                    .build();
        }
    }
    

    3.启动类添加包扫描

    Swagger2的配置类写好了,现在需要在service_host模块使用配置类。由于二者不在同一个项目中,所以需要在service_host模块的父模块的pom中引入service_util。而两者包名不同,还需要额外在启动类上添加包扫描。

    引入swagger配置类

    测试

    项目启动后访问:http://localhost:8201/swagger-ui.html ,可以看到项目中接口的信息:

    通过swagger查看后台API文档
    在Controller中添加下面几个简单的Api注解,可以将swagger中的一些信息定义为中文: 通过swagger添加注解

    如果需要测试接口,我们只需要点击接口下方的Try it out 按钮:

    通过swagger测试方法
    点击按钮后即可,看到接口的一系列返回信息:
    通过swagger查看方法返回结果

    swagger常用注解

    注解 说明
    @Api 修饰整个类,描述Controller的作用
    @ApiOperation 描述一个类的一个方法,或者说一个接口
    @ApiParam 单个参数描述
    @ApiModel 用对象来接收参数
    @ApiModelProperty 用对象接收参数时,描述对象的一个字段
    @ApiImplicitParam 一个请求参数
    @ApiImplicitParams 多个请求参数

    相关文章

      网友评论

        本文标题:分布式医疗挂号系统(三) | 整合Swagger2到通用模块

        本文链接:https://www.haomeiwen.com/subject/jlemkltx.html