[Android] Làm sạch các cuộc gọi API của bạn!

Tram Ho


Trong thực tế khi bạn làm việc với việc tạo mới một API Call. Vấn để xử lý server lỗi và API lỗi thường tương tự nhau và lặp đi lặp lại nhiều lần cho mỗi lần bạn tạo. Việc xử lý lặp lại một tác vụ có thể dẫn đến sai sót , boilerplate…

Để giải quyết vấn đề này, hôm nay chúng ta sẽ cùng nhau clean lại API call và tạo lại model để nhận dữ liệu từ server trả về.

Trong bài này mình sẽ clean lại API call của Retrofit. Một thư viện sử dụng rộng rãi nhất trong Android khi xử lý việc request tới server. Đồng thời dùng generic để viết lại model nhận data từ server trả về.

Một API Call điển hình thường thấy:

Mỗi API call Retrofit khi gọi sẽ trả về cho chúng ta một Callback<T> object. T ở đây là generic type chính là đối tượng chứa data mà ta nhận được khi thực hiện xong request.

Như bạn thấy ở code phía trên Callback<T> là một interface cái mà sẽ được truyền vào mỗi API Call

Bây giờ, thay vì sử dụng Callback ban đầu mà Retrofit cung cấp chúng ta sẽ tiến hành viết lại bằng cách thừa kế nó, refactor lại thành chính callback mà chúng ta mong muốn.

Như vậy, bây giờ nếu chúng ta cần request thì chúng ta sẽ sử dụng SimpleCallback<T> thay cho Callback<T>

Vừa rồi chúng ta đã tiến hành viết lại Callback<T> . Bây giờ chúng ta sẽ tiếp tục viết lại model cho data nhận về của chúng ta.

Thông thường khi respone từ server trả về thì object lỗi sẽ giống nhau, còn đối tượng data trả về sẽ khác nhau tùy thuộc vào từng request. Nhận thấy điều này chúng ta sẽ sử dụng generic type để viết gọn lại model.

Status: chung cho tất cả respone

Respone class sẽ nhận data tùy thuộc vào từng request nên ta sẽ sử dụng generic type ở đây:

Sau khi kết hợp cả SimpleCallback<T>Respone<T> thì request của chúng ta bây giờ sẽ trở thành như sau:

Như vậy vừa rồi mình đã trình bày cách clean API Retrofit trong Android:

  1. implement lại Callback<T>
  2. Viết lại model nhận dữ liệu.

Happy coding!

Bài viết có tham khảo tại: https://android.jlelse.eu/clean-your-api-calls-79d67098d258

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo