跳到主要内容

Gateway服务的详细设计

在服务的过滤调用时,服务可以分为两类:Gateway服务和Web服务。Gateway服务是业务网关,Web服务就是业务为主的服务,比如用户服务、订单服务等。 而Gateway服务和Web服务最大的区别就是 request 和 response 的设计,就拿 request 来说:

  • Gateway服务中的请求头操作是 ServerHttpRequest 类型

  • 普通Web服务中的请求头操作是 HttpServletRequest 类型

这两种是互不兼容的,而这两种服务都有从请求头获取参数的操作,为了将这两种操作进行统一适配,link-flow 也做了适配,关于此部分的详细讲解,请跳转到 项目设计讲解-请求上下文的操作设计 章节。

如果要在 Gateway 服务中实现 link-flow 的功能,那么就要引入以下模块依赖

<dependency>
<groupId>org.javaup</groupId>
<artifactId>link-flow-work-gateway-starter</artifactId>
<version>${revision}</version>
</dependency>

而本文将详细讲解Gateway服务功能的设计

GatewayWorkAutoConfiguration

首先看配置类,知道都加载了哪些

public class GatewayWorkAutoConfiguration {

/**
* 请求路由过滤器
* */
@Bean
public GlobalFilter gatewayWorkRouteFilter() {
return new GatewayWorkRouteFilter();
}

/**
* 返回路由过滤器
* */
@Bean
public GlobalFilter gatewayWorkClearFilter() {
return new GatewayWorkClearFilter();
}

/**
* 请求上下文的Gateway实现
* */
@Bean
public GatewayContextConfigOperation gatewayContextConfigOperation(MetaDataOperation metaDataOperation) {
return new GatewayContextConfigOperation(metaDataOperation);
}
}