文章目录AlamofireSwift 网络请求这件事它包了它到底解决什么问题跨平台支持比你想的广Swift Concurrency 支持实际开发中的体验怎么接入生态实际建议AlamofireSwift 网络请求这件事它包了做 iOS 开发的人大概率听过 Alamofire。这项目在 GitHub 上有 4.2 万 Star算是 Swift 生态里最老牌的网络库之一了。我最近重新看了下它的现状发现这老项目活得比很多新项目都滋润。它到底解决什么问题简单说Alamofire 把 iOS 原生的 URLSession 包了一层让你写网络请求的时候少写很多样板代码。原生 URLSession 发一个请求要创建 URLRequest、设置 HTTP 方法、处理回调、解析数据一套下来几十行。用 Alamofire几行搞定。而且它不是简单的封装。链式调用、自动重试、请求拦截、证书锁定、网络状态监听这些实际开发中经常用到的功能它都内置了。跨平台支持比你想的广很多人以为 Alamofire 只能用在 iOS 上其实不是。它支持的平台包括iOS 10.0 以上macOS 10.12 以上tvOS 10.0 以上watchOS 3.0 以上LinuxWindowsAndroid当然Linux、Windows 和 Android 上还有些功能缺失比如证书锁定和部分认证方式用不了。但核心的请求和响应处理是没问题的。Swift Concurrency 支持Alamofire 从很早就开始跟进 Swift 的新特性。现在它完整支持 Swift Concurrency也就是 async/await。发请求可以直接 await 拿结果不用再写回调地狱那一套。举个例子用原生 URLSession 写一个带认证、带缓存、带重试的请求代码量不小。用 Alamofire 的话链式调用一行一行写下来逻辑清晰代码量少一半。它同时也支持 Combine所以不管你用哪种异步方案都能接进去。实际开发中的体验我在几个项目里用过 Alamofire说说感受。好的方面API 设计确实优雅链式调用写起来很顺畅。错误处理也比较完善网络超时、服务器返回非 200、JSON 解析失败这些场景都有现成的处理方式。cURL 命令输出这个功能很实用调试的时候直接复制到终端就能测。不那么好的方面库本身体积不小如果你的项目只需要发几个简单的 GET 请求引入 Alamofire 有点重。而且 Swift 5.5 之后 URLSession 原生也支持 async/await 了轻量场景下原生方案够用。怎么接入支持三种主流的包管理工具Swift Package Manager在 Package.swift 里加一行依赖就行。CocoaPodsPodfile 里加pod Alamofire。CarthageCartfile 里加github Alamofire/Alamofire。我个人推荐 Swift Package Manager现在 Xcode 原生支持不用装额外工具。生态Alamofire 还有两个配套库AlamofireImage 处理图片下载和缓存AlamofireNetworkActivityIndicator 控制 iOS 上的网络活动指示器。这两个库也是同一个团队维护的质量有保障。实际建议如果你的 Swift 项目需要做网络请求而且请求数量多、逻辑复杂Alamofire 还是值得用的。它的 API 成熟度和社区支持在 Swift 网络库里是第一梯队。但如果你只是发几个简单请求原生 URLSession 配合 async/await 就够了没必要引入整个库。这项目维护了十年还在活跃更新Swift 6 的兼容也做了。能活这么久的开源项目不多说明它确实解决了实际问题。要引入整个库。这项目维护了十年还在活跃更新Swift 6 的兼容也做了。能活这么久的开源项目不多说明它确实解决了实际问题。