如何在 iOS 客户端中传递 AWS AppSync 自定义请求标头?

Posted

技术标签:

【中文标题】如何在 iOS 客户端中传递 AWS AppSync 自定义请求标头?【英文标题】:How to pass AWS AppSync custom request header in iOS client? 【发布时间】:2019-01-26 16:58:58 【问题描述】:

AWS AppSync 支持从客户端传递自定义标头并使用 $context.request.headers 在您的 GraphQL 解析器中访问它们。我想知道我该怎么做在 ios 客户端中?谢谢 :) https://docs.aws.amazon.com/appsync/latest/devguide/resolver-context-reference.html

【问题讨论】:

【参考方案1】:

我刚刚找到了一种在 iOS 客户端中传递额外 AWS AppSync 请求标头的方法 :)这是 AppSyncManager 的示例类

final class AppSyncManager 

    static func instance() -> AWSAppSyncClient 
        let tmpURL = URL(fileURLWithPath: NSTemporaryDirectory())
        let databaseURL = tmpURL.appendingPathComponent(databasName)
        let urlSessionConfiguration = URLSessionConfiguration.default
        // Our request header => In resolve mapping: $context.request.headers.author
        urlSessionConfiguration.httpAdditionalHeaders = ["author": CognitoUserPoolManager.instance.author]
        let appSyncConfig = try! AWSAppSyncClientConfiguration(url: endPointURL,
                                                               serviceRegion: region,
                                                               userPoolsAuthProvider: CognitoAuthProvider(),
                                                               urlSessionConfiguration: urlSessionConfiguration,
                                                               databaseURL: databaseURL)
        let appSyncClient = try! AWSAppSyncClient(appSyncConfig: appSyncConfig)
        appSyncClient.apolloClient?.cacheKeyForObject =  $0["id"] 
        return appSyncClient
    


【讨论】:

如何在 android 中实现?【参考方案2】:

在最新的aws-mobile-appsync-sdk-ios SDK 2.6.22 中,问题正在修复中。

【讨论】:

以上是关于如何在 iOS 客户端中传递 AWS AppSync 自定义请求标头?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cloudformation 脚本执行期间将 Cognito UserPoolID、客户端密码传递给 AWS Lambda?

如何让 WebSocket 服务器在 aws 上运行

如何通过 AWS AppSync 客户端将保存字符串的变量传递给 GraphQL 查询?

在 AWS API Gateway iOS SDK 中传递查询字符串参数

Elasticsearch npm:传递AWS凭证

如何安全地存储适用于 iOS 的 AWS 服务 ID?