我使用的是spring boot Version-2.0.6.Release和spring cloud Version-finchley.sr2
@Override
public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) {
ServerHttpRequest request = (ServerHttpRequest) exchange.getRequest();
String s = resolveBodyFromRequest(request);
/* s comes out to be "" */
return chain.filter(newExchange);
}
private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest){
//Get the request body
Flux<DataBuffer> body = serverHttpRequest.getBody();
StringBuilder sb = new StringBuilder();
body.subscribe(buffer -> {
byte[] bytes = new byte[buffer.readableByteCount()];
buffer.read(bytes);
DataBufferUtils.release(buffer);
String bodyString = new String(bytes, StandardCharsets.UTF_8);
sb.append(bodyString);
});
return sb.toString();
}
您可以使用ModifyRequestBodyGatewayFilterFactory,我相信它包含在Spring Cloud Gateway2.0.2中,它是Finchley的一部分。
对于例如:
@Override
public GatewayFilter apply(Config config) {
return (exchange, chain) -> {
ModifyRequestBodyGatewayFilterFactory.Config modifyRequestConfig = new ModifyRequestBodyGatewayFilterFactory.Config()
.setContentType(ContentType.APPLICATION_JSON.getMimeType())
.setRewriteFunction(String.class, String.class, (exchange1, originalRequestBody) -> {
String modifiedRequestBody = yourMethodToModifyRequestBody(originalRequestBody);
return Mono.just(modifiedRequestBody);
});
return new ModifyRequestBodyGatewayFilterFactory().apply(modifyRequestConfig).filter(exchange, chain);
};
}
问题内容: 我正在将带有JSON正文的POST请求发送到Django服务器(相当标准)。在服务器上,我需要使用进行解码。 问题是如何获取字符串格式的请求正文? 我目前有以下代码: 但是,这给出了一个错误。 如何以正确的编码将请求的主体作为字符串检索? 问题答案: 请求主体,是一个字节字符串。在Python 3中,将仅接受unicode字符串,因此您必须先进行解码,然后再将其传递给。 在Python
希望在Spring API网关上实现一个代理来记录请求/响应。我为传入的请求和传出的响应定义了自己的过滤器。 请求网关筛选器: 没有一个工作... 有什么想法或可能的方法来解决这个“得到身体”的问题?
我有一个csv文件如下: 我想在请求正文中将搜索条件作为json发布,并准备了以下代码作为gatling场景,但它不起作用——由于正文中的json不正确,我收到了400个状态代码: 当我将json从csv文件转换为body语句(如上所述)时,它可以工作:
他们在vertx网站上的文档不太清楚如何接收请求的正文。 我得到错误: 如果他们甚至不把它放在他们的文件里,我怎么知道该怎么称呼它...
我是Reactor编程新手,需要MONO/Flux方面的帮助 我有POJO课程 受雇者Java语言 我在访问服务时返回了Mono,我需要从Mono中提取名称作为字符串。 但这再次返回Mono而不是字符串。我需要从这个Mono中提取String值。
< li >最终目标: RestController的@ExceptionHandler中的日志请求正文字符串。 解释 默认情况下,当请求是无效的json时,springboot会抛出一个< code > httpmessagenoretreadableexception ,但该消息非常通用,并不包括具体的请求体。这使得调查变得困难。另一方面,我可以使用过滤器记录每个请求字符串,但是这样日志会被太