微服务网关 SDK 使用指南

最近更新时间:2019-12-24 21:27:40

准备工作

开始实践微服务网关功能前,请确保您已完成 SDK 下载

快速上手

使用微服务网关功能前,您需要在pom.xml中添加网关依赖项,同时在代码中使用网关开关注解。

  1. 向工程中添加依赖。在 pom.xml 中添加以下代码:
    <dependency>
     <groupId>com.tencent.tsf</groupId>
     <artifactId>spring-cloud-tsf-gateway</artifactId>
     <version><!-- 调整为 SDK 最新版本号 --></version> 
    </dependency>
  2. 向 Application 类中添加注解 @EnableTsfGateway
    // 下面省略了无关的代码
    import com.tencent.tsf.gateway.core.annotation.EnableTsfGateway;
    @EnableTsfGateway
    public class Application {
     public static void main(String[] args) {
         SpringApplication.run(Application.class, args);
     }
    }
  3. 创建分组,导入 API。具体请参考 微服务网关分组管理

集成 TSF 其它功能

您在使用微服务网关功能的同时,还可以集成 TSF 其它功能,包括分布式配置、监控、服务治理等,您需要在pom.xml中添加其对应依赖项,同时在代码中启用注解,具体参考其功能接入文档。以下示例为集成所有功能:

  1. 向工程中增加依赖。在 pom.xml 中添加以下代码:
    <dependency>
     <groupId>com.tencent.tsf</groupId>
     <artifactId>spring-cloud-tsf-gateway</artifactId>
     <version><!-- 调整为 SDK 最新版本号 --></version> 
    </dependency>
    <!--TSF 其它 SDK 依赖-->
    <dependency>
    <groupId>com.tencent.tsf</groupId>
    <artifactId>spring-cloud-tsf-starter</artifactId>
    <version><!-- 调整为 SDK 最新版本号 --></version> 
    </dependency>
  2. 向 Application 类中增加注解 @EnableTsf
    // 下面省略了无关的代码
    import com.tencent.tsf.gateway.core.annotation.EnableTsfGateway;
    import org.springframework.tsf.annotation.EnableTsf;
    @EnableTsfGateway
    @EnableTsf
    public class Application {
     public static void main(String[] args) {
         SpringApplication.run(Application.class, args);
     }
    }

自定义网关过滤器

TSF Gateway 提供通过继承TsfGatewayZuulFilter的方式自定义 Filter,同时需要在类上添加@TsfGatewayFilter注解。目前 TSF Gateway 基于 zuul1 实现,其 Filter 功能和原生 ZuulFilter 保持一致。

import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE;

import com.netflix.zuul.exception.ZuulException;
import com.tencent.tsf.gateway.core.annotation.TsfGatewayFilter;
import com.tencent.tsf.gateway.zuul1.filter.TsfGatewayZuulFilter;

@TsfGatewayFilter
public class TestFilter extends TsfGatewayZuulFilter {

    @Override
    public String filterType() {
        return PRE_TYPE;
    }

    @Override
    public int filterOrder() {
        return 100;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() throws ZuulException {
        System.out.println("hello world");
        return null;
    }
}