Ios alamofire的两种请求方法之间有什么区别?

Ios alamofire的两种请求方法之间有什么区别?,ios,swift,alamofire,Ios,Swift,Alamofire,我只是在玩Alamofire框架,很少调用api。然而,我观察到在alamofire中有两种请求方法: public func request(method: Method, URLString: URLStringConvertible, parameters: [String: AnyObject]? = nil, encoding: ParameterEncoding = .URL, headers: [String: String]? = nil) -> Request{...}

我只是在玩Alamofire框架,很少调用api。然而,我观察到在alamofire中有两种请求方法:

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

我发现这非常有趣,因为第一个方法原型很详细,很容易理解。但是第二个是相当混乱的,我知道它采用了一个符合Alamofire定义的URLRequestConvertible协议的参数

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

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


谢谢。

方法或
参数的
请求
的格式副本假定您手动准备了
NSMutableURLRequest
,其中包括适当的
HTTPMethod
、HTTP头(例如
内容类型
等)和
HTTPBody


通常情况下,您不会使用此格式副本的
请求
方法(我们使用Alamofire正是为了让我们摆脱手工构建请求的麻烦),但当您必须构建Alamofire无法准备的请求(例如)时,此方法非常有用。

感谢您给出了非常清晰的答案。但是,如果我们在使用请求方法的第二个版本时没有指定HTTP方法,即接受URLRequestConverable作为参数。然后呢?例如,如果查看此链接中编写的router类:,则在通过创建请求时不会指定HTTP方法。路由器枚举。
NSURLRequest
(或
NSMutableURLRequest
)的默认
HTTPMethod
GET
,因此如果未指定,则使用该方法。此外,此
enum
使用
Alamofire.ParameterEncoding.URL
(与
GET
一致)。
public func request(URLRequest: URLRequestConvertible) -> Request {...}