如何在 GraphQL apollo-android 客户端中获取 HTTP 状态码

Posted

技术标签:

【中文标题】如何在 GraphQL apollo-android 客户端中获取 HTTP 状态码【英文标题】:How to get HTTP status code in GraphQL apollo-android client 【发布时间】:2021-05-07 13:58:42 【问题描述】:

我正在使用 apollo 客户端 https://github.com/apollographql/apollo-android 来查询 Graphql API。在 Graphql Server 中,我们返回的是 HTTPS 状态

return Response.status( Status.BAD_REQUEST ).entity( exception.getMessage() ).build();

如何在客户端获取 HTTPS 状态码作为响应?

客户端代码

ApolloCall<T> apolloCall = apolloClient.query( query );
Response<T> response = Rx2Apollo.from( apolloCall ).onErrorReturn( throwable -> null ).blockingFirst();

我主要想知道错误是客户端异常还是服务器异常。

【问题讨论】:

响应包含dataerrors(如果存在错误)道具 github.com/apollographql/apollo-android/blob/… @xadm 错误不包含 HTTPS 状态。 @xadm 它仍然为您提供消息:$message,位置:$locations,路径:$path,但没有 http 状态。状态有助于了解它是服务器错误还是客户端错误。 github.com/apollographql/apollo-android/… 【参考方案1】:

您可以删除.onErrorReturn( throwable -&gt; null ) 部分,HTTP 错误将在onError 中作为ApolloHttpException 返回,您可以在其上调用.code() 以获取HTTP 代码。

【讨论】:

以上是关于如何在 GraphQL apollo-android 客户端中获取 HTTP 状态码的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GraphQl 中使用 graphql-type-json 包

如何在 android 中使用 GraphQl?

如何在 GraphQL 中导出字段定义

如何在 GraphQL 中制定嵌套模式

如何在 Java 中使用 GraphQL?

GraphQL-js Node/Express:如何在 GraphQL 查询中传递字符串对象?