GMSNetworkLayer
需求
- iOS 12.2+
- Xcode 11+
- Swift 5.0+
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖关系管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 GMSNetworkLayer 集成到您的 Xcode 项目中,在 Podfile
中指定它。
pod 'GMSNetworkLayer', '~> 1.1'
Carthage
Carthage 是一个集中式的依赖项管理器,构建您的依赖并为您提供二进制框架。要使用 Carthage 将 GMSNetworkLayer 集成到您的 Xcode 项目中,请在 Cartfile
中指定它。
github "GabrielSilveiraa/GMSNetworkLayer" ~> 1.1
使用
创建一个与 EndPointType
协议一致的 Enum。示例:
enum BookApi {
case case booksList(_ index: Int)
}
extension BookApi: EndPointType {
var baseURL: URL {
guard let url = URL(string: "https://www.googleapis.com") else {
fatalError("baseURL could not be configured.")
}
return url
}
var path: String {
switch self {
case .booksList:
return "/books/v1/volumes"
}
}
var httpMethod: HTTPMethod {
switch self {
case .booksList:
return .get
}
}
var encoding: ParameterEncoding? {
switch self {
case .booksList:
return .urlEncoding
}
}
var parameters: [String : Any] {
switch self {
case .booksList(let index):
return ["q" : "ios",
"maxResults" : 20,
"startIndex" : index]
}
}
}
然后按照以下方式创建你的服务类:
class BooksListService {
let networkManager: NetworkManager
init(session: URLSession = .shared) {
networkManager = NetworkManager(session: session)
}
}
extension BooksListService: BooksListServiceProtocol {
func getBooksList(index: Int, completion: @escaping (Result<BookVolumes, Error>) -> Void) {
let endPoint = BookApi.booksList(index)
networkManager.request(endPoint, completion: completion)
}
}
结果对象必须与以下示例一致的 Decodable 协议:
struct BookVolumes: Decodable {
let items: [BookVolume]?
}
struct BookVolume: Decodable {
let id: String
}