【问题标题】:What is the difference between the two request methods of alamofire?alamofire的两种请求方式有什么区别?
【发布时间】:2015-10-09 21:56:46
【问题描述】:

我只是在玩 Alamofire 框架并进行一些 api 调用。但是我观察到 alamofire 中有两种请求方法:

public func request(method: Method, URLString: URLStringConvertible, parameters: [String: AnyObject]? = nil, encoding: ParameterEncoding = .URL, headers: [String: String]? = nil) -> Request{...}

public func request(URLRequest: URLRequestConvertible) -> Request {...}

我觉得这很有趣,因为第一个方法原型很详细而且很容易理解。但是第二个很混乱,我知道它需要一个符合 Alamofire 定义的 URLRequestConvertible 协议的参数。

在第二个请求原型中,从未指定需要使用的 HTTP 方法(GET 或 POST),那么 alamofire 是如何知道要使用哪种 HTTP 方法的。有没有办法让 alamofire 在发出请求时知道使用哪种 http 方法。

另外,这两种方法(如果有的话)还有哪些其他显着差异?首选哪一种?为什么?

谢谢。

【问题讨论】:

    标签: ios swift alamofire


    【解决方案1】:

    没有methodparametersrequest 的呈现假定您手动准备了包含适当HTTPMethodNSMutableURLRequest、HTTP 标头(例如Content-Type 等),以及HTTPBody.

    您通常不会使用 request 方法的这种再现(我们使用 Alamofire 正是为了让我们摆脱手动构建请求的麻烦),但是当您必须构建一个 Alamofire 无法以其他方式准备的请求时很有用(例如Sending json array via Alamofire)。

    【讨论】:

    • 感谢您提供非常明确的答案。但是,如果我们在使用请求方法的第二个版本时没有指定 HTTP 方法,即接受 URLRequestConvertible 作为参数。那会发生什么?例如,如果您查看此链接中编写的路由器类:raywenderlich.com/85080/beginning-alamofire-tutorial,则在创建请求时从不指定 HTTP 方法。路由器枚举。
    • HTTPMethod 的默认 NSURLRequest(或 NSMutableURLRequest)是 GET,所以如果未指定,那就是使用的。另外,这个enum 使用Alamofire.ParameterEncoding.URL(与GET 一致)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多