我是不是需要将 Alamofire 请求打包成 AFNetwork 之类的东西?

Posted

技术标签:

【中文标题】我是不是需要将 Alamofire 请求打包成 AFNetwork 之类的东西?【英文标题】:Do I need to package Alamofire's request into something like AFNetwork?我是否需要将 Alamofire 请求打包成 AFNetwork 之类的东西? 【发布时间】:2017-12-14 08:53:10 【问题描述】:

我刚刚开始在一个项目中使用 Swift。我选择 Alamofire 作为网络接口。

因为我以前用过AFNetworking风格的界面:

- (NSURLSessionDataTask *)GET:(NSString *)URLString
                   parameters:(id)parameters
                     progress:(void (^)(NSProgress * _Nonnull))downloadProgress
                      success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success
                      failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure

我可以很清楚的区分成功和失败。每个人都有自己的块来做自己的工作。

但在 Alamofire 中,请求样式似乎需要将成功和失败混合在一个块中:

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
    .responseJSON  response in

        if let JSON = response.result.value 
            print("JSON: \(JSON)")
        


那么我是否必须将 Alamofire 的请求接口打包成类似 AFNetworking 的样式?或者有人对此有一些好的做法吗?

【问题讨论】:

【参考方案1】:

在响应中,您会获得很多信息,包括您的数据(如果成功),但如果有错误(错误?可选类型)。

您可以简单地检查错误是否为零,然后它是成功的。

Alamofire.request(.GET, "https://httpbin.org/get", parameters: ["foo": "bar"])
    .responseJSON  response in
      if response.error == nil 
        if let JSON = response.result.value 
            print("JSON: \(JSON)")
        
       else 
        //do something
      

【讨论】:

以上是关于我是不是需要将 Alamofire 请求打包成 AFNetwork 之类的东西?的主要内容,如果未能解决你的问题,请参考以下文章

如果将代码共享给其他系统,我是不是需要在代码中安装 alamofire

请求 Alamofire

如何使用 Alamofire 将单个对象作为参数发送

如何使用Alamofire将单个对象作为参数发送

使用 RxSwift 将 Alamofire 请求绑定到表视图

Python程序打包成.exe(史上最全面讲解)