【发布时间】:2021-11-09 19:47:05
【问题描述】:
我知道发送带有 GET 请求的正文不是最好的主意,但我正在尝试使用需要它的现有 API。
使用 POST 发送正文很简单:
webClient.post()
.uri("/employees")
.body(Mono.just(empl), Employee.class)
.retrieve()
.bodyToMono(Employee.class);
但它不适用于webClient.get(),因为虽然post() 方法返回WebClient.RequestBodyUriSpec,但get() 方法返回WebClient.RequestHeadersUriSpec<?>,这似乎不允许任何主体定义。
我在这里找到了 Spring RestTemplate 的解决方法:RestTemplate get with body, 但没有找到任何新的 WebClient 的运气。
【问题讨论】:
-
~你不能,因为 HTTP 不支持它——据我所知。~我的立场是正确的——你可以用 GET 发送一个正文;虽然这是一件很奇怪的事情。您是否尝试过使用
.method(GET)? -
@BoristheSpider 的方法应该可以正常工作(如果我们发送没有位置标头的
CREATED响应,我们可能会使用相同的解决方法)。但我必须同意鲍里斯的观点,即发送带有 get 的身体 - 虽然不是严格禁止 - 是非常不鼓励而不是最佳实践。 -
确实有效!非常感谢@BoristheSpider。我怎么没注意到通用的
.method()。
标签: java spring spring-webflux spring-webclient