ModifyRequestBody GatewayFilter 工厂
您可以使用 ModifyRequestBody 过滤器在网关将请求正文发送到下游之前对其进行修改。
| 此过滤器只能通过 Java DSL 进行配置。 |
以下列表展示了如何修改请求正文 GatewayFilter
@Bean
public RouteLocator routes(RouteLocatorBuilder builder) {
return builder.routes()
.route("rewrite_request_obj", r -> r.host("*.rewriterequestobj.org")
.filters(f -> f.prefixPath("/httpbin")
.modifyRequestBody(String.class, Hello.class, MediaType.APPLICATION_JSON_VALUE,
(exchange, s) -> Mono.just(new Hello(s.toUpperCase())))).uri(uri))
.build();
}
static class Hello {
String message;
public Hello() { }
public Hello(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
如果请求没有正文,则 RewriteFilter 会传入 null。应该返回 Mono.empty() 以分配请求中缺失的正文。 |