关于Spring Boot Webflux 2.5.0以及如何处理没有主体的http响应的小问题。
我所说的“没有身体”是指:
例如,我使用rest API并且没有控制的web应用程序返回:
HTTP status code 200
HTTP body {"foo": "bar"}
使用Spring Webflux,我们可以轻松地编写如下内容:
public Mono<FooBar> sendRequest(SomeRequest someRequest) {
return webClient.mutate()
.baseUrl("https://third-party-rest-api.com:443")
.build()
.post()
.uri(/someroute)
.body(BodyInserters.fromValue(someRequest))
.retrieve().bodyToMono(FooBar.class);
}
public class FooBar {
private String foo;
//getter setters
}
以便获得与http正文相对应的POJO。
public Mono<WhatToPutHerePlease> sendRequest(SomeRequest someRequest) {
return webClient.mutate()
.baseUrl("https://third-party-rest-api.com:443")
.build()
.post()
.uri(/someroute-with-no-http-body-response)
.body(BodyInserters.fromValue(someRequest))
.retrieve()
.bodyToMono(WhatToPutHerePlease.class);
}
有什么需要帮忙的吗?
谢谢。
因此,我有点迷茫,不知道在这里放什么。
响应是空的,因此webclient没有任何内容需要解析并返回值。因此,无论使用什么泛型类型,结果的mono
总是为空。
我们有一个特殊的类型,本质上说“这将始终是空的”-void
(注意大写V
。)因此,如果您想返回一个空单声道,同时保持代码的其余部分相同,那么您应该使用该类型。
或者,如果您不想返回一个空发布服务器,那么您可以考虑使用.retrieve().TobodilessEntity()
而不是.retrieve().bodytomono()
-这将返回一个mono
。结果的主体显然仍然是空的,但是返回的响应实体将使您能够提取有用的信息,如响应代码和头信息。
我想知道当服务器端发生错误时返回是否正确(错误详细信息将包含在响应主体中)。 例子: 我们正在发送 这是不是正确的行为?我们是否应该将状态代码更改为200以外的值?
当我显示客户的ID时,我会得到错误消息。我也试图更改属性'id'的名称,但出现了相同的错误与新名称。 HTTP状态500-内部服务器错误 类型异常报告消息内部服务器错误描述服务器遇到内部错误,导致它无法完成此请求。 异常org.apache.jasper.jasperException:javax.el.PropertyNotFoundException:类“de.java2Enterprise.
的方法,例如抛出。我想从catch块中的那个异常对象中提取HTTP状态代码和响应正文。我该怎么做?
我有一个接收HTTP请求的微服务(Java Spring Boot),然后通过HTTP调用REST API调用另一个服务。被调用的服务返回HTTP状态201(无响应正文),但我需要返回HTTP 200和响应正文。 我使用WebClient调用其他服务,对于201状态,我使用的是bodyToMono(Void.class)。那么,如何为我的微服务的客户端返回HTTP 200响应体呢?最佳做法是什么?
下面是我正在使用的一段代码: 期望reponse conatins的状态行:“HTTP/1.1400坏请求”想知道这是可以实现的吗?如果是,那么我如何继续做同样的事情。
我试图创建一个regex来捕获HTTP状态代码和curl请求的主体。下面的regex模式可以在多个在线站点上工作,但在我的Mac命令行上的shell if-语句中不匹配。是我的regex关闭了还是有其他事情发生? 我也对其他方法持开放态度(我的目标是运行Centos5的机器)。