Trang Chủ

URLSession Networking trong Swift

Qua bài này, các bạn sẽ nắm được:


Khi nào cần dùng URLSession

URLSession là 1 framework được chính Apple phát triển và implement sẵn trong iOS. Rất nhiều developer dùng thư viện từ bên thứ 3 như Alamofire nhưng bạn sẽ sớm nhận ra rằng, bạn không cần thiết quá phụ thuộc vào 1 thư viện để tạo 1 HTTP request đơn giản, URLSession sẽ có tất cả những thứ mà bạn muốn.

URLSession là gì

URLSession là một class cung cấp API để tương tác với các giao thức như HTTP, HTTPS

Fetch data dùng URLSession

Vào phần thực hành luôn nhé, các bước để lấy dữ liệu từ webservice:

  1. Khởi tạo HTTP Request với URLSession
  2. Dùng URLSessionDataTask gửi yêu cầu để lấy dữ liệu
  3. In ra các loại dữ liệu được trả về
  4. Kiểm tra có đúng dữ liệu ta cần và Convert dữ liệu sang JSON

Khởi tạo HTTP Request với URLSession

Chúng ta cần 1 session và 1 URL như thế này

  1. Tạo 1 tham chiếu tới Class URLSession với cấu hình mặc định
  2. Tạo url với kiểu URL, tham số là string

URL dùng ở VD này là uers.json, copy đường dẫn này và paste vào trong string

Dùng URLSessionDataTask gửi yêu cầu lấy dữ liệu

Tạo 1 dataTask với function dataTask(with:completionHandler:) :

dataTask(with:completionHandler:) có 2 tham số truyền vào: url được khởi tạo ở trên và 1 completionHandle

Đến đây, 1 request vẫn chưa hoàn thành, nó chỉ mới được khởi tạo, để bắt đầu gửi yêu cầu hãy thêm:

In ra các loại dữ liệu được trả về

Trăm nghe không bằng mắt thấy, bạn hãy in các kiểu dữ liệu bắt trong completionHandle và xem nó là gì nhé

Chúng ta có gì nào?:

Kiểm tra có đúng dữ liệu ta cần

Khi thực hiện một request HTTP, bạn cần xác thực lại ít nhất các điều sau:

  1. Liệu có xảy ra lỗi nào không? => check error
  2. HTTP response code có trả về theo đúng mong đợi => check response
  3. dữ liệu trả về có đúng format? => check data hay convert data sang JSON

Check có lỗi hay không ?

Nếu có lỗi thì gọi 1 hàm để giải quyết lỗi này và thoát. Hoặc bạn có thể tham khảo thêm các cách xử lý: throw an error

Check response có OK ?

Check data, convert sang JSON

Sử dụng optional binding để ép kiểu data sang chuỗi JSON bằng cách dùng function jsonObject(with:options:) của class JSONSerialization. Bằng cách đọc từng kí tự trong có trong data và chuyển nó sang chuỗi JSON, giống như bạn đọc sách và câu chuyện đó sẽ xuất hiện trong đầu bạn.

Một cách khác mà apple khuyên bạn nên sử dụng:

Ở đoạn code trên, nếu trong try bắt được lỗi thì nó sẽ được in ra trong catch

Oke cùng xem kết quả json in ra là gì, có giống với uers.json mà bạn mong đợi không:

Tổng kết

Awesome ! dưới đây là toàn bộ đoạn code mà cả buổi nay đã học, qua đó chúng ta biết được


Tài liệu tham khảo:

https://learnappmaking.com/urlsession-swift-networking-how-to/ https://www.raywenderlich.com/567-urlsession-tutorial-getting-started https://learnappmaking.com/swift-optionals-how-to/#optional-binding

Chia sẻ bài viết ngay