ApolloAlamofire
Apollo GraphQL iOS 库的 Alamofire 传输实现。
这是什么?
如果您使用了 Apollo iOS 库,您可能已经注意到与库提供的标准 HTTPNetworkTransport
相关的一些限制
幸运的是,Apollo iOS 提供了一个公开的 NetworkTransport
协议,允许我们覆盖那些受限制的行为。看起来 Alamofire 是最受欢迎的 iOS 网络库,并且所有提到的限制都可以用它来解决。您可能已经在使用 Alamofire 来获取 GraphQL API 的身份验证令牌了,因此将 Alamofire 和 Apollo iOS 集成在一起是有意义的。
此软件包打包了一个包裹 Alamofire 并解决这些限制的 NetworkTransport
实现包。
示例
初始化新的 ApolloClient
实例时,而不是
let u = URL(string: "https://:8080/graphql")!
let client = ApolloClient(url: u)
或者而不是
let u = URL(string: "https://:8080/graphql")!
let client = ApolloClient(networkTransport: HTTPNetworkTransport(url: u))
使用
import ApolloAlamofire
//...
let u = URL(string: "https://:8080/graphql")!
let client = ApolloClient(networkTransport: AlamofireTransport(url: u))
对于 AlamofireTransport
初始化器,还有其他可用的参数,例如,对于后台会话,您可以像这样使用它
let c = URLSessionConfiguration.background(withIdentifier: "your-id")
let u = URL(string: "https://:8080/graphql")!
let s = SessionManager(configuration: c)
let t = AlamofireTransport(url: u, sessionManager: s)
let client = ApolloClient(networkTransport: t)
像这样用于身份验证标头
let token = "blah"
let u = URL(string: "https://:8080/graphql")!
let h = ["Authorization": "Bearer \(token)"]
let t = AlamofireTransport(url: u, headers: h)
let client = ApolloClient(networkTransport: t)
或像这样用于请求和响应日志
let u = URL(string: "https://:8080/graphql")!
let t = AlamofireTransport(url: u, loggingEnabled: true)
let client = ApolloClient(networkTransport: t)
同时,headers
和loggingEnabled
也是AlamofireTransport
的可变属性。这使得您可以在不创建新的传输的情况下更改标头,例如,当用户登出,不同用户登录时,您可以交换身份验证标头。如果您动态切换日志记录,您可以通过相同的方式控制loggingEnabled
属性,而无需创建新的AlamofireTransport
实例。
Alamofire的一个很好的特性是其请求日志输出准备好使用的curl命令,您可以将其直接复制粘贴到终端中测试请求。
除了url
外的所有初始化器参数都有合理的默认值,并且可以根据您的需要组合使用。
要运行示例项目,克隆仓库,然后在Xcode中打开Example/ApolloAlamofire.xcworkspace
。
要求
- Xcode 10.0 或更高版本
- Swift 4.2 或更高版本
- iOS 9.0 部署目标或更高版本。
如果您需要用CocoaPods集成库,Alamofire和Apollo iOS依赖会自动获取。目前测试的兼容版本是Alamofire 4.x和Apollo iOS 0.10.x。
如果您需要Xcode 9和Swift 4.0支持,您可以使用更早版本的ApolloAlamofire:[0.3.0](https://github.com/graphql-community/ApolloAlamofire/tree/0.3.0)。
安装
CocoaPods
CocoaPods 是Swift和Objective-C Cocoa项目的依赖管理器。您可以使用以下命令安装:
$ gem install cocoapods
导航到项目目录,并使用以下命令创建 Podfile
$ pod install
在您的 Podfile
中指定 ApolloAlamofire
pod
pod 'ApolloAlamofire', '~> 0.6.0'
然后,运行以下命令:
$ pod install
打开创建的 YourApp.xcworkspace
文件。这应该是您每天用来创建应用的文件,而不是 YourApp.xcodeproj
文件。
Carthage
Carthage 是一个依赖管理器,它会构建你的依赖并提供二进制框架。
可以使用以下命令通过 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
在 Cartfile
文件中,添加 ApolloAlamofire
的 GitHub 路径
github "graphql-community/ApolloAlamofire" ~> 0.6.0
然后,运行以下命令来构建框架
$ carthage update
将构建的框架拖入您的 Xcode 项目中。
维护者
许可证
ApolloAlamofire 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。