Nappa
可适应的 HTTP 客户端
要求
- iOS 8.0+ / Mac OS X 10.10+ / tvOS 9.0+ / watchOS 2.0+
- Xcode 9.0+
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它:
$ gem install cocoapods
要使用 CocoaPods 将 Nappa 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'Nappa', '~> 2.0'
然后,运行以下命令:
$ pod install
Carthage
Carthage 是一个去中心化的依赖管理器,可以自动化将框架添加到您的 Cocoa 应用程序的过程。
您可以使用以下命令通过 Homebrew 安装 Carthage:
$ brew update
$ brew install carthage
要使用 Carthage 将 Nappa 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它。
github "AlTavares/Nappa" ~> 2.0
Swift Package Manager
要将 Nappa 作为 Swift Package Manager 的包使用,只需在您的 Package.swift 文件中添加以下内容。
import PackageDescription
let package = Package(
name: "HelloNappa",
dependencies: [
.Package(url: "https://github.com/AlTavares/Nappa.git", "2.0.0")
]
)
手动方式
如果您不打算使用上述依赖管理器之一,也可以手动将 Nappa 集成到项目中。
Git 子模块
- 打开终端,进入您的顶级项目目录,运行以下命令(如果您的项目未初始化为 git 仓库):
$ git init
- 通过运行以下命令将 Nappa 添加为 git 子模块:
$ git submodule add https://github.com/AlTavares/Nappa.git
$ git submodule update --init --recursive
-
打开新的
Nappa
文件夹,并将Nappa.xcodeproj
拖动到您的应用程序 Xcode 项目的 Project Navigator 中。它应该嵌套在您的应用程序蓝色项目图标下。它是否位于所有其他 Xcode 组之上或之下无关紧要。
-
在 Project Navigator 中选择
Nappa.xcodeproj
,并验证部署目标与您的应用程序目标相匹配。 -
然后,在 Project Navigator 中选择您的应用程序项目(蓝色项目图标)以导航到目标配置窗口,并在侧边栏的 "Targets" 下选择应用程序目标。
-
在该窗口顶部的标签栏中,打开 "General" 选项卡。
-
在 "Embedded Binaries" 部分的下方点击
+
按钮。 -
您将看到两个不同的
Nappa.xcodeproj
文件夹,每个文件夹中都有一个嵌套在 "Products" 文件夹中的两个不同版本的Nappa.framework
。选择哪个
Products
文件夹无关紧要。 -
选择
Nappa.framework
。 -
就这么简单!
Nappa.framework
会自动添加为目标依赖项,在复制文件构建阶段作为链接框架和嵌入框架,这是在模拟器和设备上构建所需的所有内容。
嵌入二进制文件
- 从https://github.com/AlTavares/Nappa/releases下载最新版本。
- 然后,在 Project Navigator 中选择您的应用程序项目(蓝色项目图标)以导航到目标配置窗口,并在侧边栏的 "Targets" 下选择应用程序目标。
- 在该窗口顶部的标签栏中,打开 "General" 选项卡。
- 在 "Embedded Binaries" 部分的下方点击
+
按钮。 - 添加下载的
Nappa.framework
。 - 就这么简单!
使用方法
基本使用
let service = HTTPService()
service.request(method: .get, url: "https://httpbin.org/get")
.responseJSON { (jsonResponse) in
switch jsonResponse.result {
case .success(let response):
// do something with the result
print(response)
case .failure(let error):
// do something in case of error
print(error)
}
}
您可以通过传递这些参数来发出请求
request(method: HTTPMethod, url: String, payload: Encodable, headers: Headers? = nil, parameterEncoding: ParameterEncoding? = nil)
request(method: HTTPMethod, url: String, data: Data, headers: Headers? = nil, parameterEncoding: ParameterEncoding? = nil)
request(method: HTTPMethod, url: String, headers: Headers? = nil)
ParameterEncoding
更改您的有效载荷将被编码的方式,选项有
.json -> JSON Encoding
.form -> Form Data Encoding
.url -> URL Encoding, a query string is added to the URL
.none -> no data
如果存在数据且未设置ParameterEncoding
,则它将根据HTTPMethod
自动设置
如果未在Header中设置,则内容类型将自动使用当前的ParameterEncoding
设置
许可证
Nappa是在MIT许可证下发布的。有关详细信息,请参阅LICENSE。