当前位置: 首页 > 知识库问答 >
问题:

webclient设置表头反应方式

仉高昂
2023-03-14

我是 WebFlux 和响应式编程方式的新手。我正在使用WebClient调用REST服务,在调用时,我需要设置一个HTTP标头,HTTP标头的值来自反应流,但是WebClient上的标头方法仅采用字符串值...

Mono<String> getHeader() {
    ...
}

webClient
  .post()
  .uri("/test")
  .body(Mono.just(req),req.getClass())
  .header("myHeader",getHeader())
...

上面的行不会编译,因为header方法使用String作为第二个参数。如果值来自反应流,如何设置标头?

共有1个答案

牛华皓
2023-03-14

您只需要使用< code>flatMap来链接< code>getHeader和web客户端请求,以创建反应流

return getHeader()
 .flatMap(header -> 
        webClient
           .post()
           .uri("/test")
           .header("myHeader", header)
           .body(BodyInserters.fromValue(req))
           ...
)
 类似资料:
  • 我有一个关于Spring Reactive WebClient的问题...几天前,我决定在Spring Framework中玩新的反应式东西,我做了一个仅用于个人目的的抓取数据的小项目。(向一个网页发出多个请求并组合结果)。 我开始使用新的反应式WebClient发出请求,但我发现的问题是客户端没有对每个请求发出响应。听起来很奇怪。下面是我为获取数据所做的工作: 以及调用fetchData的函数:

  • 在HttpServletResponse接口中定义了若干设置HTTP响应消息头的方法,如addHeader方法可以添加响应消息头字段;addIntHeader方法可以添加整数值的响应消息头字段;setContextType方法可以设置Context-Type字段值。 HTTP响应消息头是由若干key-value对组成的,其中key表示字段名,value表示字段值,中间用冒号(:)分隔。如下面的内容

  • 我希望从spring reactive WebClient进行SOAP调用。我找不到任何文件。想知道会有什么方法。现在我在想 null 缺点和其他方法是什么?

  • My API Gateway/Lambda安装程序返回HTTP响应头:Lambda使用回调函数作为JSON的一部分返回值,集成响应将其映射到HTTP头(使用) 使用此解决方案,值将在正文和标题中发回。 如何从Lambda响应映射头而不复制响应体中的值?

  • 问题内容: 我正在尝试在Go Web服务器中设置标题。我正在使用和软件包。 我想设置为允许跨域AJAX。 这是我的Go代码: 该软件包具有描述发送HTTP请求标头(好像它是客户端)的文档-我不确定如何设置响应标头? 问题答案: 没关系,我知道了-我在(doh!)上使用了方法 我的处理程序现在看起来像这样: 也许这会帮助有人像咖啡因一样被剥夺自己的时间:)

  • 我希望避免在属性前面加,而只需设置Spring WebClient构建器,将所有snake_case转换为camelCases。 这可能吗?

  • 问题内容: 这是我的代码: 但是,当我从浏览器向服务器发出请求时,出现此错误: 我也尝试过这种方法,在请求之后设置响应头: 没有骰子。我犯了同样的错误。有没有一种方法可以只在route函数中设置响应头?这样的事情将是理想的: 但我还是找不到这样做。请帮忙。 编辑 如果我使用POST请求卷曲URL,如下所示: 我得到这个回应: 有任何想法吗? 问题答案: 你可以很容易地做到这一点: 查看和 但是有些

  • 问题内容: 假设我在Go中有一个中间件,我想用自己的值覆盖任何现有的标头。 然后我将其添加到这样的响应链中 不幸的是,如果authHandler或由DefaultServeMux调用处理的任何事情(例如,httputil.ReverseProxy.ServeHTTP),我最终在响应中会有两个Server标头。 我真正想要的是这样的: 但是,ServeHTTP的语义不允许这样做: ServeHTTP