SENetworking 1.0.8

SENetworking 1.0.8

Oleh Kudinov 维护。



  • Oleh Kudinov

SENetworking

CocoaPods Carthage compatible Swift Package Manager compatible Swift 5 Platform License CI

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 平台)

使用包管理器安装它,然后在需要的地方导入 SFNetworkingSwift 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 许可证,开源许可协议