淘东电商项目(05) - Swagger及网关统一管理API

简介: 淘东电商项目(05) - Swagger及网关统一管理API

引言

在上一节《淘东电商项目(04) - 注册中心及Feign远程调用》主要讲解了注册中心以及使用Feign远程调用。

代码已提交至Github(版本号:8e89a7b9c7d01685c45f11f545449d95ede0293b),有兴趣的同学可以下载来看看: https://github.com/ylw-github/taodong-shop

本文将开始讲解使用Swagger管理每个微服务的API,并使用网关来进行统一管理。

本文目录结构:

l____引言

l____ 1. 微服务整合Swagger

l________1.1 配置接口层的Maven

l________1.2 配置会员服务

l________1.3 配置微信服务

l____ 2. 网关统一管理API

l________2.1 Maven依赖

l________2.2 统一管理API代码

l________2.3 配置

l____ 3. 测试

l________3.1 验证单个服务swagger

l________3.2 验证网关整合后的swagger

l____总结

1. 微服务整合Swagger

下面来讲解配置微信服务和会员服务的API Swagger管理,然后整合到网关来实现API的统一管理。

1.1 配置接口层的Maven

配置taodong-shop-service-api的maven文件,添加swagger依赖:

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

1.2 配置会员服务

首先要开启swagger开启配置文件,在会员服务(taodong-shop-service-member)的启动类添加注解@EnableSwagger2Doc:

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
@EnableSwagger2Doc
public class AppMember {
    public static void main(String[] args) {
        SpringApplication.run(AppMember.class, args);
    }
}

然后在配置文件添加swagger描述(可选):

####swagger相关配置
swagger:
  base-package: com.ylw.taodong
  title: 淘东电商项目-会员服务接口
  description: 该项目“基于SpringCloud2.x构建微服务电商项目。
  version: 1.1
  terms-of-service-url: www.xxx.com
  contact:
    name: 杨林伟
    email: xxxxxx@qq.com

最后在接口(taodong-shop-service-api-member)添加Swagger文档注解描述:

@Api(tags = "会员服务接口")
public interface MemberService {
    @ApiOperation(value = "会员服务调用微信服务")
    @GetMapping("/memberInvokWeixin")
    public AppEntity memberInvokWeixin();
}

1.3 配置微信服务

配置微信服务与配置会员服务的流程导致一致。

首先要开启swagger开启配置文件,在微信服务(taodong-shop-service-weixin)的启动类添加注解@EnableSwagger2Doc:

@SpringBootApplication
@EnableEurekaClient
@EnableSwagger2Doc
public class AppWeiXin {
    public static void main(String[] args) {
        SpringApplication.run(AppWeiXin.class, args);
    }
}

然后在配置文件添加swagger描述(可选):

####swagger相关配置
swagger:
  base-package: com.ylw.taodong
  title: 淘东电商项目-微信服务接口
  description: 该项目“基于SpringCloud2.x构建微服务电商项目。
  version: 1.1
  terms-of-service-url: www.xxx.com
  contact:
    name: 杨林伟
    email: xxxxxx@qq.com

最后在接口(taodong-shop-service-api-weixin)添加Swagger文档注解描述:

@Api(tags = "微信服务接口")
public interface AppService {
    @ApiOperation(value = "微信应用服务接口")
    @GetMapping("/getApp")
    public AppEntity getApp();
}

2. 网关统一管理API

模块定位到taodong-shop-basics-zuul

2.1 Maven依赖

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!-- swagger-spring-boot -->
<dependency>
  <groupId>com.spring4all</groupId>
  <artifactId>swagger-spring-boot-starter</artifactId>
  <version>1.7.0.RELEASE</version>
</dependency>

2.2 统一管理API代码

配置启动类开启Swagger,并配置每个子Swagger的相关内容,如下:

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
@EnableSwagger2Doc
public class AppGateWay {
    public static void main(String[] args) {
        SpringApplication.run(AppGateWay.class, args);
    }
    // 添加文档来源
    @Component
    @Primary
    class DocumentationConfig implements SwaggerResourcesProvider {
        @Override
        public List<SwaggerResource> get() {
            List resources = new ArrayList<>();
            // 网关使用服务别名获取远程服务的SwaggerApi
            resources.add(swaggerResource("taodong-shop-service-member", "/taodong-shop-service-member/v2/api-docs", "2.0"));
            resources.add(swaggerResource("taodong-shop-service-weixin", "/taodong-shop-service-weixin/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;
        }
    }
}

2.3 配置

###服务启动端口号
server:
  port: 80
###服务名称(服务注册到eureka名称)
spring:
  application:
    name: taodong-shop-basics-zuul
###服务注册到eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8100/eureka

3. 测试

3.1 验证单个服务swagger

1.启动Eureka注册中心服务(AppEureka),启动后浏览器输入:http://localhost:8100/,可以看到如下:

2.启动会员服务(AppMember

3.启动微信服务(AppWeixin

4.验证会员服务,浏览器输入:http://localhost:8300/swagger-ui.html#/,可以看到swagger管理的接口内容如下:

6.验证微信服务,浏览器输入:http://localhost:8200/swagger-ui.html#/,可以看到swagger管理的接口内容如下:

3.2 验证网关整合后的swagger

最后我们来启动网关服务(AppGateWay),然后浏览器输入

http://localhost/swagger-ui.html#/,在如下界面,可以看到可以选择查看项目的API文档,比如选择“会员服务服务”的接口,如下:

在比如选择“微信服务项目”的接口,如下:

总结

目录
相关文章
|
3月前
|
监控 Cloud Native 安全
基于 API 网关践行 API First 开发实践
API First 开发模式的核心在于:以 API 为先,将其视为“头等公民”,在构建应用、服务及集成之前,应优先定义并设计 API 及其配套。API First 作为一种相对较新的开发模式,它已逐渐流行并获得业内的广泛认可。
228 81
|
1月前
|
数据采集 监控 安全
电商项目中如何选择安全高效的电商数据采集API接口?
选择电商项目数据采集接口时,需综合考虑需求、性能、安全性、成本和合规性等因素。如果平台提供官方API,优先选择API接口;如果没有API或API无法满足需求,可以考虑网页抓取或其他数据采集方式。在实际操作中,建议进行充分测试和监控,确保数据采集的稳定性和准确性。
|
6月前
|
人工智能 监控 负载均衡
一文详述:AI 网关与 API 网关到底有什么区别?
近年来,AI发展迅猛,大模型成为推动业务创新的关键力量。企业面临如何安全管理和部署AI应用的挑战,需设计既能满足当前需求又可适应未来发展的基础架构。AI网关应运而生,在集成、管理和优化AI应用中扮演重要角色。本文探讨AI网关与API网关的区别,分析AI系统为何需要专门网关,并提供选择合适AI网关的建议。AI网关不仅支持多种模型,还具备高级安全性和性能优化功能,有助于企业在复杂环境中灵活应用AI技术。
299 1
|
8月前
|
人工智能 Cloud Native 安全
统一多层网关好处多,阿里云云原生 API 网关打造全能型网关
本文分享了作为一款全能型网关【云原生 API 网关】是如何帮助企业落地统一网关架构的。
8315 27
|
5月前
|
负载均衡 Java API
项目中用的网关Gateway及SpringCloud
Spring Cloud Gateway 是一个功能强大、灵活易用的API网关解决方案。通过配置路由、过滤器、熔断器和限流等功能,可以有效地管理和保护微服务。本文详细介绍了Spring Cloud Gateway的基本概念、配置方法和实际应用,希望能帮助开发者更好地理解和使用这一工具。通过合理使用Spring Cloud Gateway,可以显著提升微服务架构的健壮性和可维护性。
175 0
|
9月前
|
人工智能 API
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
阿里云微服务引擎及 API 网关 2024 年 6 月产品动态
183 30
|
8月前
|
XML 开发框架 .NET
ASP.NET Web Api 如何使用 Swagger 管理 API
ASP.NET Web Api 如何使用 Swagger 管理 API
182 1
|
8月前
|
安全 API
【Azure API 管理】APIM Self-Host Gateway 自建本地环境中的网关数量超过10个且它们的出口IP为同一个时出现的429错误
【Azure API 管理】APIM Self-Host Gateway 自建本地环境中的网关数量超过10个且它们的出口IP为同一个时出现的429错误
102 0
|
8月前
|
JSON API 数据格式
【Azure API 管理】是否可以将Swagger 的API定义导入导Azure API Management中
【Azure API 管理】是否可以将Swagger 的API定义导入导Azure API Management中
|
9月前
|
安全 Java API
Nest.js 实战 (三):使用 Swagger 优雅地生成 API 文档
这篇文章介绍了Swagger,它是一组开源工具,围绕OpenAPI规范帮助设计、构建、记录和使用RESTAPI。文章主要讨论了Swagger的主要工具,包括SwaggerEditor、SwaggerUI、SwaggerCodegen等。然后介绍了如何在Nest框架中集成Swagger,展示了安装依赖、定义DTO和控制器等步骤,以及如何使用Swagger装饰器。文章最后总结说,集成Swagger文档可以自动生成和维护API文档,规范API标准化和一致性,但会增加开发者工作量,需要保持注释和装饰器的准确性。
239 0
Nest.js 实战 (三):使用 Swagger 优雅地生成 API 文档