ModifyRequestBody 過濾器

您可以使用 ModifyRequestBody 過濾器在閘道器將請求主體傳送到下游之前對其進行修改。

此過濾器只能透過 Java DSL 進行配置。

以下列表展示瞭如何修改請求主體過濾器

GatewaySampleApplication.java
import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.modifyRequestBody;
import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.uri;
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> gatewayRouterFunctionsModifyRequestBody() {
        return route("modify_request_body")
            .route(host("*.modifyrequestbody.org"), http())
            .before(uri("https://example.org"))
            .before(modifyRequestBody(String.class, Hello.class, MediaType.APPLICATION_JSON_VALUE,
                    (request, s) -> new Hello(s.toUpperCase())))
            .build();
    }

	record Hello(String message) { }
}
如果請求沒有主體,則 RewriteFilter 會傳遞 null。應該返回 Mono.empty() 以指定請求中缺少主體。
© . This site is unofficial and not affiliated with VMware.