Xây dựng swift package để gọi network trong swift

Tuần trước, chúng ta đã xem qua 1 cách custom về thư viện bàn phím hiển thị gợi ý tiền Việt Nam. Hôm nay tôi sẽ hướng dẫn cách tạo 1 thư viện để gọi network dạng restful API. Thư viện tên là Qnetwork. Bạn có thể tải trên github tại đường dẫn:

https://github.com/lexuanquynh/QNetwork

Thư viện này dùng để làm gì?

Đầu tiên trước khi tiến hành xây dựng, hãy tải phần demo của tôi tại đường dẫn:

https://github.com/lexuanquynh/QNetworkDemo

Đầu tiên, bạn cần biết rằng tôi xây dựng thư viện này tốt nhất cho kiến trúc MVVM. Tuy nhiên bạn vẫn có thể sử dụng nó cho các architecture khác mà bạn muốn. Nếu hiểu theo cách đơn giản, bạn dùng thư viện này, bạn tạo các service để gọi API. Sau đó, bạn dùng nó để gọi bất cứ ở đâu bạn muốn.

Vậy cách sử dụng nó như nào? Hãy xem phần code demo của tôi. Ở ví dụ này tôi sẽ tiến hành gọi API của github:

curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/search/repositories

Trong 1 bài viết trước đây, tôi đã giới thiệu khá kỹ càng cách viết API cho nó. Các bước tiến hành như sau:

  • Tạo 1 module Github. Mỗi module sẽ phục vụ cho 1 màn hình riêng biệt. Trong thiết kế MVVM tôi hay làm như vậy, module bao gồm View, Model, servive gọi API và view model. Bạn có thể mở souce code ở trên ra xem.
  • Tạo 1 file GithubAPI. File này chứa cụm API cần gọi. Thông thường trong ứng dụng của tôi sẽ có nhiều file dạng *API. Mỗi 1 file chứa 1 cụm, ví dụ AuthenAPI sẽ chứa cụm đăng nhập, đăng xuất. FeedAPI chứa cụm API liên quan đến feed. Cách đặt tên sẽ sát nghĩa nó làm gì. Mô tả file này như sau:
  • Sau đó bạn tạo tiếp file GithubSearchService. Ở đây bạn cần truyền 1 struct Codable để lúc API có response, bạn cần đưa nó vào và chuyển json sang struct này. Cụ thể là struct GithubSearchResponse:

Nhiều bạn hỏi tôi sao có thể từ json chuyển sang struct được như trên. Tôi là 1 người lười biếng, nên tôi hay vào trang này để chuyển:
https://app.quicktype.io

Sau đó bạn chỉ cần chỉnh sửa tên cho hợp lý là được. Bạn làm nhiều sẽ quen tay thôi.

  • Sau khi xong cụm service ở trên, bạn cần tạo GithubViewModel:

Nhiều bạn sẽ tò mò tại sao tôi lại viết được như trên. Cũng tương tự, tôi hay tải source của người khác về xem. Sau đó tôi clone y hệt, người ta viết gì, tôi viết nấy. Lâu dần quen tay, có phản xạ. Cuối cùng là hiểu được ý nghĩa mà người ta làm. Dù sao thì thực hành vẫn là cách tốt nhất để học lập trình.

Xây dựng QNetwork như nào?

Việc này khá là mù mờ nếu như không có video. Thú thật tôi đã xem video hướng dẫn của 1 developer khác ở đường dẫn này:
https://www.youtube.com/watch?v=xu9oeCAS8aA

Bạn xem kỹ video, làm theo anh ấy, bạn sẽ tạo được 1 swift package và có thể đưa cho người khác sử dụng thông qua 1 đường dẫn. Với Qnetwork, đơn giản bạn chỉ cần thêm đường dẫn này vào phần swift package của bạn(Xcode ➞ File ➞ New ➞ Swift Package):

https://github.com/lexuanquynh/QNetwork.git

Từ nay tôi sẽ chỉ cần 1 đường link, sau đó thêm vào, và có thể dễ dàng triển khai lớp network service của mình.

Nếu bạn có câu hỏi gì, hãy vào fan page của trang tại địa chỉ:

https://www.facebook.com/codetoanbug

Hãy chia sẻ cho ai đó nếu bạn thấy bài viết có ích.

Viết một bình luận