如何从 iOS 中的 hasura graphql 查询中获取错误响应

Posted

技术标签:

【中文标题】如何从 iOS 中的 hasura graphql 查询中获取错误响应【英文标题】:How to get error response from hasura graphql query in iOS 【发布时间】:2021-10-02 07:06:41 【问题描述】:

我正在使用 hasura 进行查询。

    ApolloNetworkClass.shared.apolloClient.fetch(query: GetCollectionsQuery(user_id: "120"), cachePolicy: .fetchIgnoringCacheData)  (result) in
        switch result
        
        case .success(let result) :
            if let array = result.data?.nftCollections.map($0.fragments.nftCollectionsModel)
            
                self.collectionList = array
                
                self.tblCollections.reloadData()
            
            else if let error = result.errors 
                if let errorResponse = error.first 
                    print(errorResponse)
                 else 
                    print("[Error] Got errors when call request: \(error)")
                
            
            break
        case .failure(let error) :
            Utility.ShowToast(message: error.localizedDescription, position: .top)
            print(error)
            break
        
    

这是我的查询,我只想获取错误代码或响应代码(如 401)。

我已经尝试了所有方法,但我无法获得解决方案。

提前致谢。

【问题讨论】:

【参考方案1】:

GraphQL 错误响应仍将返回状态代码 200,这与 REST API 模式不同,如果出现问题,您将收到 4xx。

为了解析错误消息,您需要查看响应对象,其格式为:


  "data": ....,
  "errors": []


You can then expand on the errors object which will contain information like the error code, location of the error via some path etc.

【讨论】:

以上是关于如何从 iOS 中的 hasura graphql 查询中获取错误响应的主要内容,如果未能解决你的问题,请参考以下文章

hasura graphql 角色访问控制

使用 Hasura graphql 模式时如何自定义 graphql-code-generator 生成的字段的类型

比较 GraphQL Hasura 中的两个字段

hasura graphql-engine v1.0.0-alpha30 版本新功能介绍

如何在 hasura graphql 引擎上上传文件或图像

hasura graphql-engine 最近版本的一些更新