SENetworking
Super Easy Networking 是一个简单的、方便的基于 NSURLSession 的封装,支持常见需求。一个足够小以一次性阅读但足够有用于任何项目的框架。这是一个针对 iOS、tvOS、watchOS 和 OS X 完全测试的框架。
- 超级最小化和轻型实现
- 简单的网络配置
- 支持 Decodable 的响应和 Encodable 的请求
- 友好的 API,使端点的声明非常简单
- 易于使用数据传输对象和映射
- 无单例模式
- 无外部依赖项
- 简单的请求取消
- 针对单元测试优化
- 完全测试
- 非常适合编码挑战
示例
端点定义:
struct APIEndpoints {
static func getMovies(with moviesRequestDTO: MoviesRequest) -> Endpoint<MoviesResponse> {
return Endpoint(path: "search/movie/",
method: .get,
headerParamaters: ["Content-Type": "application/json"], // Optional
queryParametersEncodable: moviesRequestDTO)
}
}
API 数据(数据传输对象):
struct MoviesRequest: Encodable {
let query: String
let page: Int
}
struct MoviesResponse: Decodable {
struct Movie: Decodable {
private enum CodingKeys: String, CodingKey {
case title
case overview
case posterPath = "poster_path"
}
let title: String
let overview: String
let posterPath: String
}
private enum CodingKeys: String, CodingKey {
case movies = "results"
}
let movies: [Movie]
}
API 网络配置:
struct AppConfiguration {
var apiKey: String = "xxxxxxxxxxxxxxxxxxxxxxxxx"
var apiBaseURL: String = "http://api.themoviedb.org"
}
class DIContainer {
static let shared = DIContainer()
lazy var appConfiguration = AppConfiguration()
lazy var apiDataTransferService: DataTransferService = {
let config = ApiDataNetworkConfig(baseURL: URL(string: appConfiguration.apiBaseURL)!,
queryParameters: ["api_key": appConfiguration.apiKey,
"language": NSLocale.preferredLanguages.first ?? "en"])
let apiDataNetwork = DefaultNetworkService(config: config)
return DefaultDataTransferService(with: apiDataNetwork)
}()
}
进行 API 调用:
let endpoint = APIEndpoints.getMovies(with: MoviesRequest(query: "Batman Begins", page: 1))
dataTransferService.request(with: endpoint) { result in
guard case let .success(response) = result, let movies = response.movies else { return }
self.show(movies)
}
安装
在您的 Podfile 中添加以下行以使用 CocoaPods 安装它:CocoaPods
pod 'SENetworking'
然后执行 pod install 并在需要的地方导入 SFNetworking
在您的 Cartfile 中添加以下行以使用 Carthage 安装它:Carthage
github "kudoleh/SENetworking"
然后执行 carthage update 并在需要的地方导入 SFNetworking_iOS(例如,对于 iOS 平台)
使用包管理器安装它,然后在需要的地方导入 SFNetworking:Swift Package Manager
Xcode tab: File -> Swift Packages -> Add Package Dependency
Enter package repository URL: https://github.com/kudoleh/SENetworking
然后在不同文件中导入 SFNetworking
手动安装:若要手动安装,请按照以下步骤操作
Copy folder SENetworking into your project
作者
Oleh Kudinov, [email protected]
许可协议
MIL 许可证,开源许可协议