我正在使用 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)
现在,我的服务器在每个请求后返回刷新的身份验证令牌,这是响应标头的一部分。我需要从响应标头获取令牌,但我无法找到方法来做到这一点。有人可以指导我吗?
我有一个 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)
我在这里的查询是我不能够访问响应误差身体任一validateResponse或handleResponseException。有没有办法可以捕获并解析它以获取服务器发送的实际错误?