这里的demo 都是soul-examples中的不同用户的test代码
divide插件
此插件主要针对http请求的接入
接入方法
<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-client-springmvc</artifactId>
<version>${soul.version}</version>
</dependency>
在你的control类上增加注解@SoulSpringMvcClient(具体的可以查询官网)
运行结果
到这里我们已经运行了简单的http模式的api网关请求模式.
项目运行日志:
soul 拉取配置和转发都是项目 soul-bootstrap
- 项目启动日志
从日志中可以看出在启动的时候我们读取了插件相关的配置
http 请求日志
从日志来看请求进入类的顺序
1.AbstractSoulPlugin
2.WebClientPlugin
http请求步骤
根据日志我们可以查询梳理出http请求的大概路径
从上图我们可以看到请求经历的项目和类的方法。
首先我们看下第一步中的方法这里主要进行的过滤和转发定义的规则中
@Override
public Mono<Void> filter(@Nullable final ServerWebExchange exchange, @Nullable final WebFilterChain chain) {
ServerHttpRequest request = Objects.requireNonNull(exchange).getRequest();
String urlPath = request.getURI().getPath();
for (String check : FILTER_TAG) {
if (check.equals(urlPath)) {
String result = JsonUtils.toJson(new Health.Builder().up().build());
DataBuffer dataBuffer = exchange.getResponse().bufferFactory().wrap(result.getBytes());
return exchange.getResponse().writeWith(Mono.just(dataBuffer));
}
}
return Objects.requireNonNull(chain).filter(exchange);
}
第二步中的方法主要是匹配到对应的插件