Dots
示例
要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install
要求
- iOS 8.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 2.0+
- Xcode 8.0+
- Swift 4.0+
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖关系管理器。您可以使用以下命令安装它
$ gem install cocoapods
CocoaPods 1.1+ 是构建 StorageManager 所必需的。
要使用 CocoaPods 将 StorageManager 整合到您的 Xcode 项目中,请在您的 Podfile
中指定它。
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target '<Your Target Name>' do
pod 'Dots'
end
然后,运行以下命令
$ pod install
Carthage
Carthage 是一个分布式依赖管理器,它构建您的依赖并提供二进制框架。
您可以使用以下命令通过 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
要使用 Carthage 将 StorageManager 整合到您的 Xcode 项目中,请在您的 Cartfile
中指定它。
github "iAmrSalman/Dots" ~> 0.5.0
运行 carthage update
来构建框架并将构建好的 Dots.framework
拖入您的 Xcode 项目。
Swift Package Manager
Swift Package Manager 是一个用于自动分发的 Swift 代码的工具,集成了 swift
编译器。它处于早期开发阶段,但 StorageManager 已支持在支持的平台上使用。
一旦您已经设置好了 Swift 包,只需将 StorageManager 添加到 Package.swift
中的 dependencies
值即可。
dependencies: [
.package(url: "https://github.com/iAmrSalman/Dots.git", from: "0.5.0")
]
使用说明
发起请求
import Dots
Dots.defualt.request("<URL>") { (dot: Dot) in
print(dot.response) // HTTP URL response
print(dot.data) // server data
print(dot.error) // Errors from request processing
print(dot.json) // JSON dictionary [String: Any]
}
HTTP 方法
HTTPMethod
枚举列出 HTTP 方法
public enum HTTPMethod: String {
case options = "OPTIONS"
case get = "GET"
case head = "HEAD"
case post = "POST"
case put = "PUT"
case patch = "PATCH"
case delete = "DELETE"
case trace = "TRACE"
case connect = "CONNECT"
}
这些值可以作为 request
函数中的 method
参数传递
Dots.defualt.request("<URL>") // method defaults to `.get`
Dots.defualt.request("<URL>", method: .post)
Dots.defualt.request("<URL>", method: .put)
Dots.defualt.request("<URL>", method: .delete)
request
方法的默认参数为 .get
。
参数编码
带有URL编码参数的GET请求
let parameters: Parameters = ["foo": "bar"]
Dots.defualt.request("<URL>", parameters: parameters) // defaults url encoding
Dots.defualt.request("<URL>", parameters: parameters, encoding: .url)
// <URL>?foo=bar
带有URL编码参数的POST请求
let parameters: Parameters = [
"foo": "bar",
"baz": ["a", 1],
"qux": [
"x": 1,
"y": 2,
"z": 3
]
]
Dots.defualt.request("<URL>", method: .post, parameters: parameters) // defaults url encoding
Dots.defualt.request("<URL>", method: .post, parameters: parameters, encoding: .url)
//httpHeader: Content-Type: application/x-www-form-urlencoded; charset=utf-8
// HTTP body: foo=bar&baz[]=a&baz[]=1&qux[x]=1&qux[y]=2&qux[z]=3
带有JSON编码参数的POST请求
let parameters: Parameters = [
"foo": [1,2,3],
"bar": [
"baz": "qux"
]
]
Dots.defualt.request("<URL>", method: .post, parameters: parameters, encoding: .json)
//HTTP header: Content-Type: application/json
// HTTP body: {"foo": [1, 2, 3], "bar": {"baz": "qux"}}
HTTP响应头
支持在全局request
方法中直接添加自定义HTTP头。这使得轻松将HTTP头附加到Request
变得简单。
let headers: HTTPHeaders = [
"Authorization": "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==",
"Accept": "application/json"
]
Dots.defualt.request("<URL>", headers: headers)
并发
支持选择异步和同步。
Dots.defualt.request("<URL>", concurrency: .async) // concurrency defaults to `.async`
Dots.defualt.request("<URL>", concurrency: .sync)
最大并发请求数
支持定制最大并发执行请求数。
默认情况下,检查设备是否连接到蜂窝网络,最大并发请求数限制为2,而Wi-Fi可以执行最多6个并发请求。
let customDots = Dots(maxConcurrentOperation: <Int>)
customDots.request("<URL>")
扩展
UIImageView
imageView.setImage(withURL: "<URL>")
作者
Amr Salman,[email protected]
许可
Dots程序遵从MIT许可。更多信息请查看LICENSE文件。