核心思路是通过ModifyResponseBodyGatewayFilterFactory来实现
官方文档中,ModifyResponseBodyGatewayFilterFactory的使用方法没有详细描述
实际使用时,配置如下:
spring:
cloud:
gateway:
routes:
- id: echo
order: -1
uri: lb://demo
filters:
- name: ModifyResponseBody
args:
inClass: '#{T(String)}'
outClass: '#{T(String)}'
rewriteFunction: '#{@handleEchoResponse}'
predicates:
- Method=POST
- Path=/echo
还需要实现RewriteFunction,在实现中可以读取并修改response body
@Slf4j
@Component
public class HandleEchoResponse implements RewriteFunction<String, String> {
@Override
public Publisher<String> apply(ServerWebExchange exchange, String body) {
if (StrUtil.isNotBlank(body)) {
log.debug("response body:{}", body);
}
return Mono.just(body);
}
}