spring-cloud/spring-cloud-gateway

Modify Request Body for a GET request

开放

#1,147 创建于 2019年7月3日

 (7 条评论) (0 个反应) (0 位负责人)Java (3,204 个派生)batch import
enhancementhelp wanted

仓库指标

星标
 (4,284 个星标)
PR 合并指标
 (PR 指标待抓取)

描述

We currently have custom code for modifying request body which works but I want to move to the standard ModifyRequestBodyGatewayFilterFactory.

We have a scenario where Spring Cloud Gateway received a GET request and we need call an internal GraphQL api with a POST and a request body.

ModifyRequestBodyGatewayFilterFactory works great if there is a body present in the original request but doesn't apply the rewriteFunction when there is no body on GET requests.

I am using v2.1.2.RELEASE and I have hacked together a change to ModifyRequestBodyGatewayFilterFactory which works for me:

Mono<?> modifiedBody = serverRequest.bodyToMono(inClass)
        .defaultIfEmpty("") //added this line
        .flatMap(o -> config.rewriteFunction.apply(exchange, o));

I appreciate that the ModifyRequestBodyGatewayFilterFactory is beta, but would it be possible to support adding a body for GET requests in the future?

贡献者指南