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

Spring WebFlux和WebClient更改错误响应

伯逸明
2023-03-14

我有一些控制器方法,比如

@PostMapping("/*")
fun proxy(@RequestBody body: String): Mono<ByteArray> {
    return roundRobinBean.getNext()
        .post()
        .uri("/api")
        .body(BodyInserters.fromObject(body))
        .retrieve()
        .bodyToMono<ByteArray>()
        .doOnSuccess{
            threadPool.submit(PutToCacheJob(body, it, cacheBean))
        }
        .doOnError{
            logger.error(it.message, it)
        }
}

roundRobinBean返回某个主机的WebClient。如果我得到连接超时异常或得到500响应,我需要调用另一个主机或从缓存返回数据。mono有一些处理程序来改变内部数据吗?

共有1个答案

寿子轩
2023-03-14

您可以使用OnErrorResume运算符,该运算符允许您在发生错误时定义回退。

 类似资料:
  • 我有一个基于Spring Security OAuth2的REST应用程序。我一直试图将默认的Spring Security消息传递格式从XML更改为JSON,并取得了部分成功。 对于eg--我知道了当请求不包含承载令牌时如何更改响应格式(下面一行就是这样做的) 如何更改BadCredentialsException JSON格式?当前,它返回一个类似于上面的JSON? 下面是我的applicat

  • 我正在使用改装连接到REST服务器,我需要处理成功响应和错误响应。我基于此示例构建我的客户机。 例如,在get token方法上,服务器成功响应具有以下结构: 故障响应是: 我的问题是,应用程序将错误响应视为成功。我的代码是: -rest api方法接口: -模型登录响应: -模型错误响应: -Rest回调: -客户端类别: 错误在哪里?

  • 我正在使用SpringWebClient调用RESTAPI。我想根据响应抛出一个错误。例如,如果主体存在错误(400) 然后我想抛出一个带有“error message1”的错误。如果主体出现错误(400),则采用相同的方法 然后我想抛出一个错误,错误为\u cde 100020。我想用一种非阻塞的方式来做。

  • 我正在使用Retrofit和Gson从REST服务获取数据。它运行完美,但仅当API不返回错误时。通常,API返回对象列表(作为json),但当发生错误时,API返回单个错误对象。我正在尝试获取

  • 创建一个 API 的时候处理错误是很痛苦的。为了避免手动的创建错误响应,你可以简单的抛出一个继承了 Symfony\Component\HttpKernel\Exception\HttpException 的异常,API 会自动的为你处理响应。 这里是 Symfony 内置的异常列表。 异常 状态码 Symfony\Component\HttpKernel\Exception\AccessDeni

  • 我正在使用HTMLUnit创建scrape网站。我正在使用htmlunit-2.19版本。我知道这是一个重复的问题,但相信我,我尝试了我在谷歌找到的所有解决方案,但我仍然得到了这个例外。请参见以下例外情况 我在谷歌上研究过,我发现了很多关于这个异常的解决方案,我尝试过所有的解决方案,但没有一个解决方案是有效的。 请参阅下面的解决方案,我已经应用 解决方案1 解决方案2: 我找到了其他解决方案,它们