Swiftpack.co - jackiehu/SwiftMesh as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by jackiehu.
jackiehu/SwiftMesh 1.6.6
swift砖块系列:基于Alamofire5的封装,更加快捷的发起网络请求,post,get,download,表单upload等等
⭐️ 6
🕓 2 weeks ago
iOS
.package(url: "https://github.com/jackiehu/SwiftMesh.git", from: "1.6.6")

Version SPM Xcode 11.0+ iOS 11.0+ Swift 5.0+

SwiftMesh是基于Alamofire和Codable的二次封装,使用更加方便。

涉及到的设计模式有:适配器,单例,抽象等等

介绍

MeshManager:单例

  • 获取网络状态 —isReachableWiFi、isReachableCellular

        /// MARK: 是否WiFi
        /// 是否WiFi
        public var isReachableWiFi: Bool 
       
       // MARK: 是否WWAN
        /// 是否运营商网络
        public var isReachableCellular: Bool 
    
  • 是否联网 —isReachable

        // MARK: 是否联网
        /// 是否联网
        public var isReachable: Bool 
    
  • 设置默认参数 —setDefaultParameters

        // MARK: 设置默认参数
        /// 设置默认参数
        /// - Parameter parameters: 默认参数
        public func setDefaultParameters(_ parameters: [String: Any]?) 
    
  • 默认header —setGlobalHeaders

        // MARK: 设置全局 headers
        /// 设置全局 headers
        /// - Parameter headers:全局 headers
        public func setGlobalHeaders(_ headers: HTTPHeaders?) {
            globalHeaders = headers
        }
    
  • 是否打印日志 —canLogging

    public var canLogging = false
    
  • 取消/清空请求 -cancelRequest/cancelAllRequest

        /// 取消特定请求
        /// - Parameter url: 请求的地址,内部判断是否包含,请添加详细的 path
        public func cancelRequest(_ url :String)
        
            /// 清空所有请求
        public func cancelAllRequest()
    
  • 上传/下载/普通请求 - - 所有请求都通过配置文件方式传递参数以及请求结果,通过闭包设置配置文件的属性即可,详情参看配置文件注释,用法参照MeshRequest

    请求用例

        MeshManager.shared.requestWithConfig { (config) in
          config.URLString = "https://timor.tech/api/holiday/year/2021/"
          config.requestMethod = .get
        } success: { (config) in
          let dic : [String: Any] = config.response?.value as! [String : Any]
          print("\(dic["holiday"])")
        } failure: { (_) in
          print("error getHoliday")
        }
    

MeshConfig:适配器

网络请求的配置文件,用于设置请求超时时间、请求方式,参数,header,API地址,上传用的表单等等,以及请求完成回调回来的response都在里边。

/// 网络请求配置
public class MeshConfig {
    //MARK: 请求相关配置
    /// 超时配置
    public var timeout : TimeInterval = 15.0
    /// 添加请求头
    public var addHeads : HTTPHeaders?
    /// 请求方式
    public var requestMethod : HTTPMethod = .get
    /// 请求编码
    public var requestEncoding: ParameterEncoding = URLEncoding.default  //PropertyListEncoding.xml//JSONEncoding.default
    //MARK: 请求地址以及参数
    /// 请求地址
    public var URLString : String?
    ///参数  表单上传也可以用
    public var parameters : [String: Any]?
    //MARK: 请求完成返回数据
    //服务端返回参数 定义错误码 错误信息 或者 正确信息
    public var code : Int?
    public var mssage : String?

    /// AF请求下来的完整response,可自行处理
    public var response: AFDataResponse<Any>?
    //MARK: 下载
    ///下载用 设置文件下载地址覆盖方式等等
    public var destination : DownloadRequest.Destination?
    
    public var downloadType : DownloadType = .download
    public var fileURL: URL?   
    public var resumeData : Data?

MeshRequest:解析请求

对Post、Get网络请求的Codable封装,通过设置泛型model回调生成好的Model,方便使用。用例:

 MeshRequest<TestModel>.get(“https://api.apiopen.top/getJoke?page=1&count=2&type=video”) { (model) in
            print(model!)
        }

安装

Cocoapods

1.在 Podfile 中添加 pod ‘SwiftMesh’

不需要Codable解析的可以直接pod ‘SwiftMesh/Mesh’

2.执行 pod install 或 pod update

3.导入 import SwiftMesh

Swift Package Manager

从 Xcode 11 开始,集成了 Swift Package Manager,使用起来非常方便。SwiftMesh 也支持通过 Swift Package Manager 集成。

在 Xcode 的菜单栏中选择 File > Swift Packages > Add Pacakage Dependency,然后在搜索栏输入

https://github.com/jackiehu/SwiftMesh,即可完成集成,默认依赖Alamofire。

手动集成

SwiftMesh 也支持手动集成,只需把Sources文件夹中的SwiftMesh文件夹拖进需要集成的项目即可

更多砖块工具加速APP开发

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

ReadMe Card

GitHub

link
Stars: 6
Last commit: Yesterday
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Dependencies

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics