alamofire的两种请求方式有什么区别?

What is the difference between the two request methods of alamofire?

我只是在玩 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 方法。

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

谢谢。

不带 methodparametersrequest 版本假设您手动准备了包含适当 HTTPMethodNSMutableURLRequest、HTTP headers(例如 Content-Type 等)和 HTTPBody.

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