1 回答
TA贡献1869条经验 获得超4个赞
我在手机上写这个,所以无法测试它,我是凭记忆写的,但我认为它应该是这样的。或者至少你明白了要点。
我们首先提取id。然后我们查找服务器映射,如果一切顺利,我们将其作为一个属性,然后我们继续过滤器链。
您几乎不应该在应用程序中订阅,调用客户端通常是订阅者。永远不要阻塞反应性应用程序。
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
final String id = exchange.getRequest()
.getHeaders()
.getFirst("reference");
return returnsMonoServerMappingService.getServerMapping(id)
.doOnSuccess(serverMapping -> {
exchange.getAttributes()
.put(GATEWAY_REQUEST_URL_ATTR, URI.create("https://" + server.getHost()
}).then(chain.filter(exchange));
}
添加回答
举报