springcloud-zuul集成分布式API文档swagger2

关于如何在微服务中使用swagger2文档的问题,将在这篇文章中进行讲述.

很多人在单体应用中都使用过swagger2,这个是没有问题的.不过现在系统架构进入到微服务时代,很多的互联网公司都开始使用微服务架构项目,那在微服务中是如何使用swagger2的呢,假设有:会员服务,订单服务,库存服务. 我们每次进行swagger2文档都需要改变地址栏的域名或者IP吗,这毫无疑问是一个愚蠢的做法,springboot已经帮我们提供了解决方案.

实现步骤:

1. 在父工程中引入依赖

<dependency>
    <groupId>com.spring4all</groupId>
    <artifactId>swagger-spring-boot-starter</artifactId>
    <version>1.7.0.RELEASE</version>
</dependency>

2. 我们以订单服务和会员服务为例,这里还需要使用到zuul网关,在zuul网关项目上加上添加一个配置类,下面的"/app-member/v2/api-docs"路径映射必须和zuul网关yml文件配置的项目路由映射路径一样.

@Configuration
public class SwaggerConfig {
    // 添加文档来源
    @Component
    @Primary
    class DocumentationConfig implements SwaggerResourcesProvider {
        @Override
        public List<SwaggerResource> get() {
            List resources = new ArrayList<>();
            //配置路由映射项目路径,其他的例如会员和订单服务的Swagger2文档的路径映射配置
            resources.add(swaggerResource("会员服务", "/app-member/v2/api-docs", "2.0"));
            resources.add(swaggerResource("订单服务", "/app-order/v2/api-docs", "2.0"));
            return resources;
        }

        private SwaggerResource swaggerResource(String name, String location, String version) {
            SwaggerResource swaggerResource = new SwaggerResource();
            swaggerResource.setName(name);
            swaggerResource.setLocation(location);
            swaggerResource.setSwaggerVersion(version);
            return swaggerResource;
        }
    }
}

3. 在zuul网关启动类上加上@EnableSwagger2Doc

4. 在订单和会员服务的启动类上加上@EnableSwagger2Doc

5. 配置订单和会员服务的Swagger描述(可以不配置)

swagger:
  ##联系人信息
  contact:
    email: [email protected]
    name: Jun Lee
    url: 19812543697
  ## 描述
  description: 用于学习Spring Cloud
  enabled: true
  ##排除错误路径
  exclude-path: /error/**
  host: 127.0.0.1
  license: Apache License
  title: Spring Cloud 测试会员服务接口文档
  version: 1.0.1
  ##监控所有路径
  base-path: /**

6. 然后启动zuul网关和订单和会员服务.访问zuul网关ip地址http://127.0.0.1:8100/swagger-ui.html#/ ,看到下图界面

通过切换右上角的下拉框的服务即可跳转到对应服务的文档

发布了60 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42214548/article/details/103215654