Alamofire 发布版本: Patch a Leak

Alamofire:Swift中的优雅网络

Build Status CocoaPods兼容 迦太基兼容 [![平台(https://img.shields.io/cocoapods/p/Alamofire.svg?style=flat)(https://alamofire.github.io/Alamofire) [!微博(http://twitter.com/AlamofireSF) [![的Gitter(https://badges.gitter.im/Alamofire/Alamofire.svg)(https://gitter.im/Alamofire/Alamofire?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)

Alamofire是一个用Swift编写的HTTP网络库。

特征

  • [x]可连接的请求/响应方法
  • [x] URL / JSON / plist参数编码
  • [x]上传文件/数据/流/ MultipartFormData
  • [x]使用请求或恢复数据下载文件
  • [x]使用URLCredential进行身份验证
  • [x] HTTP响应验证
  • [x]上传和下载进度关闭进度
  • [x] cURL命令输出
  • [x]动态适应和重试请求
  • [x] TLS证书和公钥密码
  • [x]网络可达性
  • [x]全面的单元和集成测试覆盖率
  • [x] 完整文档

组件库

为了使Alamofire专注于核心网络实现,Alamofire软件基金会(https://github.com/Alamofire/Foundation)创建了额外的组件库,为Alamofire生态系统带来更多功能。

  • AlamofireImage - 包含图像响应序列化器,UIImage和UIImageView扩展的图像库,自定义图像过滤器,自动清除内存中缓存和优先级图像下载系统。
  • AlamofireNetworkActivityIndi​​cator - 使用Alamofire控制iOS上的网络活动指示器的可见性。它包含可配置的延迟定时器来帮助减轻闪烁,并且可以支持不受Alamofire管理的URLSession实例。

要求

  • iOS 8.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 2.0+
  • Xcode 8.3+
  • Swift 3.1+

迁移指南

通讯

如果你需要帮助,请使用Stack Overflow。 (标签'alamofire') 如果您想询问一般问题,请使用Stack Overflow如果你发现了一个bug **,请打开一个问题。 如果有功能请求,请打开问题。 如果您*想提供,请提交拉取请求。

安装

的CocoaPods

CocoaPods是Cocoa项目的依赖管理器。您可以使用以下命令安装它:

$ gem install cocoapods

未定义 建立Alamofire 4.0+需要CocoaPods 1.1+。

要使用CocoaPods将Alamofire集成到您的Xcode项目中,请在您的Podfile中指定它:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'Alamofire', '~> 4.7'
end

然后,运行以下命令:

$ pod install

迦太基

迦太基是一个分散的依赖管理器,可以建立你的依赖关系并为你提供二进制框架。

您可以使用以下命令在Homebrew上安装Carthage:

$ brew update
$ brew install carthage

要使用Carthage将Alamofire整合到您的Xcode项目中,请在您的Cartfile中指定它:

github "Alamofire/Alamofire" ~> 4.7

运行carthage update来构建框架,并将构建的Alamofire.framework拖放到您的Xcode项目中。

Swift软件包管理器

Swift Package Manager是一个用于自动分发Swift代码的工具,并被集成到swift编译器中。它处于早期开发阶段,但Alamofire确实支持它在支持平台上的使用。

一旦你设置了Swift包,将Alamofire作为依赖项添加就像将它添加到你的Package.swift的dependencies值一样简单。

斯威夫特3

dependencies: [
    .Package(url: "https://github.com/Alamofire/Alamofire.git", majorVersion: 4)
]

斯威夫特4

dependencies: [
    .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.0.0")
]

手动

如果您不想使用任何上述的依赖管理器,您可以手动将Alamofire集成到您的项目中。

嵌入式框架

*打开终端,cd到你的顶级项目目录,并运行下面的命令“if”你的项目没有被初始化为git仓库:

$ git init

*通过运行以下命令将Alamofire添加为git submodule

$ git submodule add https://github.com/Alamofire/Alamofire.git

*打开新的Alamofire文件夹,并将Alamofire.xcodeproj拖入应用程序的Xcode项目的Project Navigator中。

未定义 它应该显示在应用程序的蓝色项目图标下面。无论是高于还是低于所有其他Xcode组都无关紧要。 在Project Navigator中选择Alamofire.xcodeproj,并验证部署目标与您的应用程序目标匹配。 接下来,在Project Navigator中选择您的应用程序项目(蓝色项目图标)以导航到目标配置窗口,并在边栏的“目标”标题下选择应用程序目标。 在该窗口顶部的标签栏中,打开“常规”面板。 点击“嵌入式二进制文件”部分下的“+”按钮。 您会看到两个不同的Alamofire.xcodeproj文件夹,每个文件夹都嵌有两个不同版本的Alamofire.framework嵌套在Products文件夹中。 未定义 无论您选择哪个“产品”文件夹,无论您选择顶部还是底部“Alamofire.framework”,都无关紧要。 为iOS选择顶部的“Alamofire.framework”,为OS X选择最低的一个。 未定义 您可以通过检查项目的构建日志来验证您选择哪一个。 “Alamofire”的构建目标将被列为“Alamofire iOS”,“Alamofire macOS”,“Alamofire tvOS”或“Alamofire watchOS”。 *就是这样! 未定义 “Alamofire.framework”自动添加为目标依赖项,链接框架和嵌入式框架在复制文件构建阶段,您只需在模拟器和设备上构建即可。

打开雷达

以下雷达对当前的Alamofire实施有一定影响。

  • rdar:// 21349340 - 由于测试用例中的免费桥接问题导致的编译器投掷警告 rdar:// 26870455 - 背景URL会话配置在模拟器中不起作用 rdar:// 26849668 - 一些URLProtocol API不能正确处理URLRequest
  • rdar:// 36082113 - URLSessionTaskMetrics无法链接到watchOS 3.0+

解决的雷达

针对Alamofire项目提交的以下雷达已经逐步解决。

  • rdar:// 26761490 - Swift字符串插值导致内存泄漏,常见用法(于9/1/17在Xcode 9 beta 6中解决)。

常问问题

Alamofire这个名字的由来是什么?

Alamofire是以Alamo Fire flower命名的,它是得克萨斯州官方州花Bluebonnet的混合变种。

什么逻辑属于路由器与请求适配器?

简单的静态数据,例如路径,参数和公共标题属于Router。诸如Authorization头的动态数据的值可以根据认证系统改变,属于RequestAdapter

动态数据必须放入RequestAdapter的原因是为了支持重试操作。当一个Request被重试时,原始请求不会被重建,这意味着`Router不会被再次调用。再次调用RequestAdapter,允许在重试“请求”之前在原始请求中更新动态数据。

积分

Alamofire由Alamofire Software Foundation拥有和维护。您可以在Twitter上通过@AlamofireSF关注项目更新和发布。

安全披露

如果您认为您已经发现Alamofire存在安全漏洞,您应该尽快通过电子邮件将其报告给security@alamofire.org。请不要将其发布到公共问题跟踪器。

捐赠

ASF正在筹集资金,正式保持注册为联邦非盈利组织。 注册将使我们的会员获得一些法律保护,并允许我们将捐赠用于免税。 捐赠给ASF将使我们能够:

支付我们的年度法律费用,以保持非营利状态良好 支付我们的邮件服务器,帮助我们解决所有问题和安全问题 有潜力资助测试服务器,使我们更容易测试边缘案例 有可能资助开发人员全职参与我们的一个项目 社区对ASF图书馆的采用令人惊叹。 我们对你们对这些项目的热情感到非常谦卑,并且希望继续尽我们所能来推动这个项目。 在您持续的支持下,ASF将能够提高其覆盖面,并为核心成员提供更好的法律安全。 如果您使用我们的任何图书馆工作,看看您的雇主是否有兴趣捐赠。 今天为了帮助我们实现我们的目标,您可以捐赠的任何金额都将不胜感激。

[![贝宝(https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)(https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id= W34WPEE74APJQ)

执照

Alamofire是在MIT许可下发布的。有关详细信息,请参见许可证(https://github.com/Alamofire/Alamofire/blob/master/LICENSE)。