Alamofire.swift(三)-URLRequest

extension URLRequest {
    public init(url: URLConvertible, method: HTTPMethod, headers: HTTPHeaders? = nil) throws {
        let url = try url.asURL()

        self.init(url: url)

        httpMethod = method.rawValue

        if let headers = headers {
            for (headerField, headerValue) in headers {
                setValue(headerValue, forHTTPHeaderField: headerField)
            }
        }
    }

    func adapt(using adapter: RequestAdapter?) throws -> URLRequest {
        guard let adapter = adapter else { return self }
        return try adapter.adapt(self)
    }
}

url是繼承了URLConvertible協(xié)議的類型

method是HTTPMethod枚舉類型

public enum HTTPMethod: String {
case get = "GET"
case head = "HEAD"
case post = "POST"
...
}

headersHTTPHeaders類型遵岩,其實(shí)就是通過(guò)類型重命名typealias關(guān)鍵字良漱,將key-value都為String類型的字典重命名為HTTPHeaders

//A dictionary of headers to apply to a URLRequest.
public typealias HTTPHeaders = [String: String]

并且可以看出,url和method都是必須要有的痛悯,headers是可選的


let url = try url.asURL()

這里用try,是因?yàn)閍sURL()定義在類型轉(zhuǎn)換時(shí)出現(xiàn)錯(cuò)誤throws異常

self.init(url: url)

這里調(diào)用URLRequest的初始化方法
//Creates and initializes a URLRequest with the given URL and cache policy.
public init ( url: URL, cachePolicy: URLRequest.CachePolicy = default, timeoutInterval: TimeInterval = default )
這里的CachePolicy其實(shí)是NSURLRequest疾宏,默認(rèn)是:.useProtocolCachePolicy
public typealias CachePolicy = NSURLRequest.CachePolicy


httpMethod = method.rawValue

舉個(gè)官方的??后添,貌似挺好理解

enum PaperSize: String {
    case A4, A5, Letter, Legal
}
let selectedSize = PaperSize.Letter
print(selectedSize.rawValue)
// Prints "Letter"
print(selectedSize == PaperSize(rawValue: selectedSize.rawValue)!)
// Prints "true"

if let headers = headers {
            for (headerField, headerValue) in headers {
                setValue(headerValue, forHTTPHeaderField: headerField)
            }
        }

for循環(huán)的這種方式是由于headers是元組類型


當(dāng)看到using adapter: RequestAdapter?的時(shí)候,我已經(jīng)知道這是個(gè)協(xié)議了蛙讥,而且有throws锯蛀,說(shuō)明我們?cè)趓eturn的時(shí)候需要try。
使用guard來(lái)判斷是否有值次慢,比if更加清晰

public protocol RequestAdapter {
    func adapt(_ urlRequest: URLRequest) throws -> URLRequest
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谬墙,一起剝皮案震驚了整個(gè)濱河市今布,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拭抬,老刑警劉巖部默,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異造虎,居然都是意外死亡傅蹂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門算凿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)份蝴,“玉大人,你說(shuō)我怎么就攤上這事氓轰』榉颍” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵署鸡,是天一觀的道長(zhǎng)案糙。 經(jīng)常有香客問(wèn)我,道長(zhǎng)靴庆,這世上最難降的妖魔是什么时捌? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮炉抒,結(jié)果婚禮上奢讨,老公的妹妹穿的比我還像新娘。我一直安慰自己焰薄,他們只是感情好拿诸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著塞茅,像睡著了一般佳镜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凡桥,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天蟀伸,我揣著相機(jī)與錄音,去河邊找鬼缅刽。 笑死啊掏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的衰猛。 我是一名探鬼主播迟蜜,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼啡省!你這毒婦竟也來(lái)了娜睛?” 一聲冷哼從身側(cè)響起髓霞,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎畦戒,沒(méi)想到半個(gè)月后方库,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡障斋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年纵潦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垃环。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邀层,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遂庄,到底是詐尸還是另有隱情寥院,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布涛目,位于F島的核電站秸谢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泌绣。R本人自食惡果不足惜钮追,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一预厌、第九天 我趴在偏房一處隱蔽的房頂上張望阿迈。 院中可真熱鬧,春花似錦轧叽、人聲如沸苗沧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)待逞。三九已至,卻和暖如春网严,著一層夾襖步出監(jiān)牢的瞬間识樱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工震束, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怜庸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓垢村,卻偏偏與公主長(zhǎng)得像割疾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘉栓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理宏榕,服務(wù)發(fā)現(xiàn)拓诸,斷路器,智...
    卡卡羅2017閱讀 134,651評(píng)論 18 139
  • 注意:更新iOS 9.3, and Swift 2.2- 2016年4月2日 原文https://www.rayw...
    Tippi閱讀 4,314評(píng)論 0 2
  • 最近一段時(shí)間搞得東西太多了麻昼。服務(wù)端Spring奠支,Android入門。但是自己的老本行一直沒(méi)有好好的整理過(guò)涌献。加上現(xiàn)在...
    紙簡(jiǎn)書生閱讀 8,667評(píng)論 3 31
  • title: "Swift 中枚舉高級(jí)用法及實(shí)踐"date: 2015-11-20tags: [APPVENTUR...
    guoshengboy閱讀 2,580評(píng)論 0 2
  • 這段時(shí)間一直在練口琴胚宦,口琴是15年買的當(dāng)時(shí)說(shuō)為了自己能堅(jiān)持學(xué)口琴就買了一個(gè)將近200元的德國(guó)口琴,買過(guò)之后練了一...
    藍(lán)天白云789閱讀 645評(píng)論 0 0