Skip to content

Commit dc8854c

Browse files
committed
Feat: Adapting the new version of GatewayClient routing
1 parent 06bbca9 commit dc8854c

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

trpc-spring-support/trpc-spring-cloud-gateway/src/main/java/com/tencent/trpc/spring/cloud/gateway/filter/TrpcRoutingFilter.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,13 @@ public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
8383
ServerHttpRequest request = exchange.getRequest();
8484
return DataBufferUtils.join(request.getBody())
8585
.map(body -> requestRewriter.resolver(exchange, route, body))
86-
.map(body -> client.asyncInvoke(request, route, body.asByteBuffer().array()))
86+
.map(body -> {
87+
java.nio.ByteBuffer byteBuffer = body.asByteBuffer();
88+
byte[] bytes = new byte[byteBuffer.remaining()];
89+
byteBuffer.get(bytes);
90+
byteBuffer.rewind();
91+
return client.asyncInvoke(request, route, bytes);
92+
})
8793
.flatMap(result -> this.responseRewriter.write(exchange, route.getMetadata(), result));
8894
}
8995

trpc-spring-support/trpc-spring-cloud-gateway/src/main/java/com/tencent/trpc/spring/cloud/gateway/rewriter/DefaultTrpcResponseRewriter.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,13 @@ public Mono<Void> write(ServerWebExchange exchange,
3030
Mono<byte[]> result) {
3131
ServerHttpResponse response = exchange.getResponse();
3232
if (result != null) {
33-
DataBuffer dataBuffer = response.bufferFactory().wrap(result.block());
34-
logger.info("dataBuffer :{}", dataBuffer.toString(StandardCharsets.UTF_8));
35-
// Content-Type uses application/json by default
36-
response.getHeaders().add("Content-Type", MimeTypeUtils.APPLICATION_JSON_VALUE);
37-
return response.writeWith(Mono.justOrEmpty(dataBuffer));
33+
return result.flatMap(bytes -> {
34+
DataBuffer dataBuffer = response.bufferFactory().wrap(bytes);
35+
logger.info("dataBuffer :{}", dataBuffer.toString(StandardCharsets.UTF_8));
36+
// Content-Type uses application/json by default
37+
response.getHeaders().add("Content-Type", MimeTypeUtils.APPLICATION_JSON_VALUE);
38+
return response.writeWith(Mono.just(dataBuffer));
39+
});
3840
}
3941
return Mono.empty();
4042
}

0 commit comments

Comments
 (0)