iOS 套件 — Alamofire ( 1 )

簡單使用以及 request 介紹

郭毓棠
Practicode
5 min readJun 21, 2017

--

套件介紹

在開發 iOS App 時常並不只是單純開發 App 的工作而已,很多時候都需要一個伺服器來傳遞資料,有時候可能會需要傳送使用者輸入的資訊到伺服器,也有可能是需要從伺服器下載檔案到 App 中,這些需要透過伺服器溝通的工作叫做 Web Service 。
Apple 也提供了一些 Swift 原生的方式來處理 Web Service ,但是卻繁複不好使用, 而 Alamofire 便是由第三方開發出來專門處理 Web Service 的套件,將原本的程式碼簡化不少,方便大家在 iOS 以及 macOS 的開發。
Alamofire 在安裝上, 可以透過 CocoaPods 來安裝,可以參考我之前寫的文章,在這邊我就不贅述了接下來就進入正題,開始介紹 Alamofire 該怎麼使用吧!

簡單使用

這次嘗試使用 Alamofire ,我們是搭配 https://httpbin.org/ 這個網站,它提供了許多測試 http 的 Web Service ,讓我們可以了解透過 Alamofire 與伺服器溝通後的效果。
一般與伺服器溝通可以分為兩個部分,第一個部分是傳遞請求 (Request) 至伺服器,告知它 App 想要傳遞、獲得什麼樣的資料。第二個部分則是當伺服器得知 App 的請求後,伺服器會傳送相對的回應 (Response) 給 App 。
在使用 Alamofire 時也是分為 request 以及 response 這兩個部分,如下面的程式碼。

在 request 中我們可以輸入 URL ,在 response 中則可以看到 request 的資訊、獲得的 response 、data的相關資料,若是回應有錯誤,便會在 error 中顯示出來,以下是實際使用的時候獲得的 response 。

右下方是伺服器回傳的資訊

上面的說明只是 Alamofire 的基本應用而已,在開發中, 與伺服器溝通常常伴隨著許多需要注意的小細節,像是有些資訊只能給特定的人查閱,那該怎麼辨別這群人呢?傳輸資料的格式有時候可能是字串,有時候則是 JSON ,那該怎麼區隔呢? Alamofire 提供了許多方式供使用者去解決這些問題,以下就讓我們更詳細地去瞭解 request 吧!

Request 介紹

在request這個函數中,可以輸入的參數有很多,以下就來一一介紹。

  • url
    這個參數是輸入自己想要連結的 URL 。
  • method
    http 協定中,有許多種溝通的方法,最常見的是 GET 、 POST 、 PUT 、 DELETE 這四種,後端開發時便會因為不同的需求而使用相對應的方法提供給 App 。這個參數預設為 GET 。
  • parameters
    有時候想要向伺服器更新、上傳資料,這個參數便是讓使用者可以再發出請求時夾帶相關的資訊,舉例來說如果想要增加把姓名設定為 david ,就可以使用下圖的方式來上傳。
可以看到伺服器回傳了姓名 david
  • encoding
    伺服器有時會規定資料的編碼方式, Alamofire 目前有 URLJSONPropertyList 這三種編碼,使用者也可以透過 ParameterEncoding 這個協定 (protocol) 來自己設計編碼方式。其中 URL 這種便是將參數附加在 URL 後面或是放在 http body 中傳送給伺服器, JSON 這種則是以 JSON 的格式傳遞資料,下圖便可以比較兩者的差異。
URL encoding 以 form 傳遞資料,而 JSON encoding 則以 json 傳遞資料。
  • headers
    標頭檔是 request 很重要的一個部分,舉例來說你需要告知伺服器這次的請求是哪種格式就需要加入 Content-Type 這個標頭檔,除此之外,有時候為了確認使用者的身份,會需要加入 Authorization 並配上一串金鑰來表示身份的正當性。這樣的應用很多,在不同場合下可能會需要添加不同的標頭檔。

透過以上的這些參數,我們便可以順利的設定好自己想要傳送的 request 給伺服器。希望大家在看完之後都能夠理解 request 各個參數使用的時機 : )

後記

request 的部分大致上都講完了,還有一些更進階的應用會放在下篇和 response 的部分一起介紹大家,敬請期待~

--

--