跳到主要内容

ModifyRequestBody 过滤器

DeepSeek V3 中英对照 ModifyRequestBody Filter ModifyRequestBody Filter

你可以使用 ModifyRequestBody 过滤器在请求体被网关发送到下游之前对其进行修改。

备注

该过滤器只能通过使用 Java DSL 进行配置。

以下列表展示了如何修改请求体过滤器:

import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.modifyRequestBody;
import static org.springframework.cloud.gateway.server.mvc.handler.GatewayRouterFunctions.route;
import static org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions.http;
import static org.springframework.cloud.gateway.server.mvc.predicate.GatewayRequestPredicates.host;
import org.springframework.http.MediaType;

@Configuration
class RouteConfiguration {

@Bean
public RouterFunction<ServerResponse> gatewayRouterFunctionsAddReqHeader() {
return route("rewrite_request_obj")
.route(host("*.rewriterequestobj.org"), http("https://example.org"))
.before(modifyRequestBody(String.class, Hello.class, MediaType.APPLICATION_JSON_VALUE,
(request, s) -> new Hello(s.toUpperCase())))
.build();
}

record Hello(String message) { }
}
java
备注

如果请求没有主体,RewriteFilter 会接收到 null。应该返回 Mono.empty() 来为请求分配一个缺失的主体。