ApolloAlamofire 0.6.0

ApolloAlamofire 0.6.0

Max Desiatov 维护。



 
依赖
Alamofire~> 4.9.1
Apollo~> 0.19.0
 

  • Max Desiatov

ApolloAlamofire

Apollo GraphQL iOS 库的 Alamofire 传输实现。

CI Status Version License Platform

这是什么?

如果您使用了 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)

同时,headersloggingEnabled也是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 项目中。

维护者

Max Desiatov

许可证

ApolloAlamofire 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。