3 cách sử dụng cơ bản của thư viện Alamofire

Thư viện Alamofire

Thư viện Alamofire là bản port từ Objective-C sang Swift của thư viện AFNetworking. Alamofire hỗ trợ cài đặt thông qua Cocoapods và hiện tại thì thư viện này không còn support cho iOS 7 nữa. Bài viết sau sẽ hướng dẫn bạn những tính năng cơ bản của Alamofire.

Cài đặt thư viện Alamofire

Alamofire có thể được cài đặt dễ dàng thông qua Cocoapods. Thêm đoạn sau vào pod file của project:

Sau đó chạy lệnh pod install trong thư mục root của project.

Sử dụng Alamofire

1. Thực hiện một request

Thư viện Alamofire khi được install thông qua cocoapods sẽ được build thành framework. Do đó để sử dụng, bạn phải import Alamofire framework:

Alamofire là một class chứa các class methods hỗ trợ cho việc thực hiện request async tới một URL. Do đó, việc gọi các request method của Alamofire sẽ có syntax như sau:

request là class method thực hiện việc request tới URL. Bản thân method này có nhiều overload với parameter khác nhau. Trong ví dụ trên, request nhận 2 parameters: HTTP Request Method dưới dạng enum, và URL để request tới. Các overload khác của request method bao gồm:

Bạn có thể xem thêm về những method này trong tài liệu của thư viện Alamofire.

2. Xử lý response

Get reponse từ server

Nhìn lại những methods request ở trên, bạn sẽ thấy rằng tất cả các method này đều trả về instance của Alamofire’s Request object. Việc này để giúp cho chúng ta có thể gọi liên tiếp các methods (chaining) của Alamofire:

Trong ví dụ trên, sau khi thực hiện một request, chúng ta tiếp tục gọi method response để handle các response trả về từ server. Method này nhận vào 1 parameter là một closure (tương đương với block trong Objective-C) với 4 parameter: request – instance của Request object, response – instance của NSHTTPURLResponse object, data – body của response dưới dạng NSData, error – NSError chứa thông tin của lỗi trả về từ phía server. Ngoài ra, cũng như request, method response cũng có các overload sau:

Ở đây, mình thích sử dụng method response thay vì responseJSON hơn, vì khi dùng responseJSON, nếu data trả về từ phía server không đúng JSON format thì Alamofire sẽ đưa ra lỗi The operation couldn’t be completed. (Cocoa error 3840.) rất xấu. Do đó mình sẽ tự parse data trả về từ phía server để control cái error message thay vì để Alamofire tự parse.

Parse data từ response

Trong snippet trên, mình đã thử convert data trả về từ server sang Dictionary thông qua extension method toDictionary của NSData object.

Nếu data không thể được convert sang Dictionary sẽ trả về kết quả là nil. Lúc này chúng ta có toàn quyền xử lý data thay vì phải dựa vào parser của Alamofire. Sẽ tránh được những lỗi xấu xí nhữ lỗi 3840 đã nói ở trên.

3. Xử lý lỗi

Tới đây thì đã gần như hoàn tất việc tạo một request và xử lý response trả về. Nhưng vẫn chưa đủ, chúng ta còn phải handle khi có lỗi xảy ra và phía server trả về response với error code (status code không phải 2xx). Với cách gọi method như ở trên, khi có lỗi xảy ra, giá trị của biến error vẫn là nil. Để Alamofire có thể parse được lỗi của server vào biến error, chúng ta phải gọi thêm một method là validate để validate response:

Trong snippet trên có các extension methods của NSErrorNSHTTPURLResponse để tiện hơn cho việc xử lý error:

Tới đây thì bạn đã có thể sử dụng Alamofire để thực hiện các request cơ bản và parse data/error trả về từ phía server. Phần tiếp theo sẽ nói về cách sử dụng thư viện Alamofire để download/upload content.

SSS Full-stack Engineer

Love Silicon Straits and want to know more about our company culture, working environment or job vacancies?
Find out more at careers.siliconstraits.vn.

Silicon Straits
Be Challenged. Be Inspired. Be Different.




Posted by

on October 21, 2015

in , , ,

Comments

Follow us for more later

or subscribe with