我使用Spring中的webClient从GraphQL WebService中获取数据。此代码位于一个泛型方法中,该方法将响应体解码为不同类型的对象。如果响应是预期的类型,则它运行良好。
webClient()
.post()
.bodyValue(graphQLQuery)
.retrieve()
.bodyToMono(classType);
现在我想处理来自WebService的错误。因此,我的问题与此非常相似:Spring Webflux:Webclient:Get body on error我发现建议使用onStatus,但我的问题是,即使respons body是错误(请参见下面的示例),http状态代码是200。有没有一种方法可以处理不依赖于http状态代码的错误,比如onStatus?
{
"errors": [
{
"message": "Cannot query field \"something\" on type \"Query\".",
"locations": [
{
"line": 2,
"column": 3
}
],
"extensions": {
"code": "FIELDS_ON_CORRECT_TYPE",
"codes": [
"FIELDS_ON_CORRECT_TYPE"
],
"number": "5.3.1"
}
}
]
}
您可以简单地使用FlatMap
并在发现错误时传播错误信号:
return webClient
.post()
.bodyValue(graphQLQuery)
.retrieve()
.bodyToMono(classType)
.flatMap(response ->
response.getErrors() != null && !response.getErrors().isEmpty() ?
Mono.error(new MyException("Errors found...")) :
Mono.just(response)
);
我这样做是为了尝试我的UserRestController,但我在响应中什么也没有得到,还有一个200状态码。 我尝试了很多方法,但都没有找到答案。。。 这是我用来测试分类控制器的代码 当我运行单元测试时,会得到以下响应:
我希望为每个状态代码显示不同的错误消息,例如: < li>400错误请求 < li>403禁止 < li>500内部服务器错误 < li>404未找到 < li>401未授权 如何在新的ASP。NETMVC6应用程序?我可以使用内置的UseErrorHandler方法执行此操作吗? 另外,我注意到,即使使用上述处理程序,输入不存在的URL(例如/this-page-不存在)也会导致来自IIS的丑陋
TLDR;如何使用Spring在正文中发送文本消息以及304状态代码? 背景 我正在使用Spring Boot编写一个REST API。在某些endpoint中,我想返回: 任一状态 ,身体, 或状态 未修改,正文 我的endpoint使用(在kotlin中)的方式如下: 问题 每当我用状态代码创建< code>ResponseEntity时!= 200,正文不发(空正文)。将< code>Htt
问题内容: 我有以下ajax请求: 由于某种原因,错误的回调被称为事件,尽管http状态代码为200,即。该请求是可以的。为什么是这样? 问题答案: 问题可能是从网址返回的json数据格式错误。当服务器实际返回内容时,http状态代码为200。但这并不意味着数据是正确的json。检查返回的字符串化json数据格式正确。 我要回答自己的邀请,因为我是很难学到的。我没有在json数据中转义“-”引号字
我知道有人正在编写一个API,并希望使用HTTP状态代码来报告查询的结果。例如,如果用户调用,并且产品不存在,它将返回HTTP状态。我认为,因为这是一个有效的调用(即实际的HTTP请求没有格式错误),它应该返回一个code响应,并且只需要响应的主体类似于。 所以我的问题是,, 1) 使用HTTP状态码来传递非HTTP程序状态是否合适,如上面的示例所示? 2)是否有一些标准规范,或者至少是广泛使用的
有没有办法获取HTTP状态码(比如200400…)在观察实时数据之前? 这是我的实现: 后果 基本存储库 我的存储库 视图模型 在我的代码中,我执行以下操作: 在哪里可以查看状态代码?我不知道在哪里实现状态码返回。