小编Kap*_*l G的帖子

GraphQL Apollo iOS 客户端响应标头

我正在使用 Apollo iOS 客户端进行 GraphQL 查询。我需要在标头中传递身份验证令牌,我可以使用下面的代码来实现 -

let apolloAuth: ApolloClient = {
            let configuration = URLSessionConfiguration.default
            let token = "Bearer \(UserDefaults.standard.string(forKey: "UserToken") ?? "")"
            // Add additional headers as needed
            configuration.httpAdditionalHeaders = ["Authorization": token]

            let url = URL(string: "...URL.../graphql")!

            return ApolloClient(networkTransport: HTTPNetworkTransport(url: url, configuration: configuration))
        }()
Run Code Online (Sandbox Code Playgroud)

我的获取查询如下 -

apolloAuth.fetch(query: referralQuery){ (result, error) in

        if let error = error {
            print(error.localizedDescription)
            return
        }else{
            self.referralId = result?.data?.referrals?.id
        }

    }
Run Code Online (Sandbox Code Playgroud)

现在,我的服务器在每个请求后返回刷新的身份验证令牌,这是响应标头的一部分。我需要从响应标头获取令牌,但我无法找到方法来做到这一点。有人可以指导我吗?

ios apollo graphql swift3

5
推荐指数
1
解决办法
2304
查看次数

解析 ktor HTTPClient 中的错误正文

我有一个 api,它在发送错误请求时返回带有正确错误信息的错误正文。例如,我得到状态代码 400 和以下正文 -

{
  "errorCode": 1011,
  "errorMessage": "Unable to get Child information"
}
Run Code Online (Sandbox Code Playgroud)

现在,当我为此在多平台模块中编写 ktor 客户端时,我会在响应验证器中捕获它,例如 -

 HttpResponseValidator {
            validateResponse {
                val statusCode = it.status.value
                when (statusCode) {
                    in 300..399 -> print(it.content.toString())
                    in 400..499 -> {
                        print(it.content.toString())
                        throw ClientRequestException(it)
                    }
                    in 500..599 -> print(it.content.toString())
                }
            }
            handleResponseException {
                print(it.message)
            }
        }
Run Code Online (Sandbox Code Playgroud)

我在这里的查询是我不能够访问响应误差身体任一validateResponsehandleResponseException。有没有办法可以捕获并解析它以获取服务器发送的实际错误?

kotlin ktor kotlin-multiplatform ktor-client

4
推荐指数
1
解决办法
2846
查看次数