https://github.com/alfredcc/Archi
Before:
Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
         .responseJSON { response in
              // 1. Validate
              if response.result.isSuccess {
                // 2. Parse JSON data
                let object = JSONParseor(response.result.value)
                print(object)
              } else {
                // handle failure data
              }
         }
Alfter:
APIClient.events(arg1, arg2: arg2) { (result) in
    switch result {
        case let .Success(value):
            print(value)
        case let .Failure(status, description):
            print("status: \(status); description: \(description)")
    }
}
一、通过 enum 将 request 拆分了成了四个模块 1. Endpoint 2. Path 3. Method 4. Parameters
二、通过 _request() 方法再次将 1. Endpoint 2. Path 3. Method 4. parameters 重组成一个 request
三、通过 Result 区分 Success 和 Failure 是回调方法中减少 if ... else 的嵌套,逻辑更加清晰
四、利用 Generic 和 Protocol 在 _request() 方法中统一解析 JSON data (只要对象遵循 JSONAbleType )
有利与 RESTFul API 的业务逻辑编写 所有接口通是过了一道 _request(),可以在这里做一些通用的逻辑处理 最终的请求回调中以然不需要去处理 JSON data 的解析,返回的是一个直接可用的 model 对象
|  |      1kouryu      2016-09-21 10:45:31 +08:00 via iPhone 这不是 Moya 干的事情么, | 
|  |      2jinzhe      2016-09-21 11:15:06 +08:00 swift 闭包真心不喜欢,感觉乱 | 
|  |      3plqws      2016-09-21 11:22:15 +08:00 还是用 promise 好 | 
|  |      4myrual      2016-09-21 11:32:26 +08:00 感觉过度设计。 在第三方库的基础上做一个库对自己是一个很好的提高。 | 
|  |      5racechao OP | 
|  |      6itoolset      2016-09-21 23:07:51 +08:00 我觉得还不如猫大的 Demo 好。。 https://github.com/MDCC2016/ProtocolNetwork |