Redes 2.0.4

Redes 2.0.4

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最后发布2017年3月
SwiftSwift 版本3.0
SPM支持 SPM

MochMoch Xiao 维护。



Redes 2.0.4

  • Moch Xiao

Redes

使用Swift编写的网络层抽象库。

为什么直接使用 Alamofire

  • 如果有一天项目经理告诉你需要使用 Socket 重建所有网络接口,你是否要将所有业务代码中的 Alamofire 替换为新的 Socket 请求?
  • 几天后,项目经理告诉你一些旧接口必须与以前的方法兼容,但需要使用 Socket 的新接口来实现,你是否将已经重建的网络接口改回来?
  • 直接使用 Alamofire,所有请求相关参数都位于业务代码中,并且有多种不同的请求调用方法,如上传、下载以及正常请求调用方法的差异。将所有相关参数打包到一个对象中,可以使用一个方法实现所有不同情况下的请求调用。遵守 命令模式 规则
  • 包装网络层,更有利于扩展。如果您既想使用 Alamofire 也想使用 Socket,只需在命令中指定您想要的请求方式,然后扩展相应的请求模式实现(默认仅实现 Alamofire
  • 网络层代码的更改不会影响业务层,底层可以自由替换转换器,请求调用只需符合业务层对 redes 的请求规则

要求

  • iOS 9.0+
  • Xcode 8.0+

使用方法

  • 使您的API符合 Requestable
struct LoginApi: Requestable {
    var userName: String = ""
    var passWord: String = ""

    var url: URLConvertible {
        return "https://host/to/path"
    }

    var method: HTTPMethod {
        return .POST
    }

    var var bodies: HTTPBodies {
        return [
            "user": userName,
            "pass": passWord
        ]
    }

    var headers: HTTPHeaders {
        return [:]
    }
}
  • 构建API并开始请求及处理结果
let loginRequest = LoginApi().action()

loginRequest.responseJSON {
    debugPrint($0.result)
}

loginRequest.responseJSON(queue: DispatchQueue.global()) {
    debugPrint($0.result)
}
.responseString {
    switch $0.result {
    case .success(let value):
        debugPrint(value)
    case .failure(let error):
         debugPrint(error)
    }
}
// .cancel()
  • 更多详细信息请参阅项目中的示例。(在运行此项目之前,请签出 API.swift 并将设置更改为您的服务器配置。)

缓存

缓存通过系统框架级别的 URLCache 来处理。

注意

  • swift 2.2的v0.x版本
  • swift 2.3的v1.x版本
  • Swift 3.x 的 v2.x

许可证

Redes 采用 MIT 许可协议。更多详情请参阅 LICENSE 文件。

联系信息

关注我的 Twitter (@mochxiao)