小编Akh*_*dla的帖子

带有查询参数的 Spring webflux WebTestClient

在我的 webflux 应用程序中,我有这个GET端点

v3/callback?state=cGF5bWVudGlkPTRiMmZlMG
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用编写集成测试 WebTestClient

@Test
public void happyScenario() {
    webTestClient.get().uri("/v3/callback?state=cGF5bWVudGlkPTRiMmZlMG")
            .exchange()
            .expectStatus()
            .isOk();
}
Run Code Online (Sandbox Code Playgroud)

这个测试用例返回404 notFound,如果我删除了查询参数,它将被调用,但state参数将丢失

我试着用 attribute

  webTestClient.get().uri("/v3/callback")
            .attribute("state","cGF5bWVudGlkPTRiMmZlMG")
            .exchange()
            .expectStatus()
            .isOk();
Run Code Online (Sandbox Code Playgroud)

但仍然state缺少参数,使用时如何在请求中包含查询参数webTestClient

java testing spring-webflux

4
推荐指数
1
解决办法
2526
查看次数

如何在Spring Webflux Java中记录请求正文

我在 POST 请求中收到一些 XML 有效负载,并希望看到接收到的有效负载以进行调试。

下面(我的自定义 WebFilter)代码按预期记录了 URI 和请求标头,但没有记录请求正文/有效负载,我的反应式代码一定有问题 -

       final ServerHttpRequest request = exchange.getRequest();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        LOGGER.info("Request: uri={}", request.getURI());
        LOGGER.info("Request: headers={}", request.getHeaders().entrySet());
        request.getBody().doOnNext(dataBuffer -> {
            try {
                Channels.newChannel(baos).write(dataBuffer.asByteBuffer().asReadOnlyBuffer());
                String body = new String(baos.toByteArray());
                LOGGER.info("Request: payload={}", body);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    baos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

我查看了布赖恩对下面帖子的回复并遵循了它,但由于没有代码,我可能犯了一些愚蠢的错误

如何在 Spring WebFlux 中记录请求和响应主体

更新代码

@Configuration
public class RequestFilter implements WebFilter {

    private static final Logger LOGGER = …
Run Code Online (Sandbox Code Playgroud)

java spring-boot project-reactor spring-webflux

0
推荐指数
1
解决办法
4575
查看次数