Để thực hiện yêu cầu http trong iOS, chúng tôi sẽ sử dụng DataTask và các phiên. Chúng tôi sẽ tạo các đối tượng cấu hình, phiên, url, yêu cầu và dataTask. Hãy xem các bước mà chúng ta sẽ thực hiện.
Yêu cầu HTTP có thể có nhiều loại khác nhau, nó phụ thuộc vào loại yêu cầu mà chúng ta muốn thực hiện đối với máy chủ của mình. Dưới đây là các loại yêu cầu cơ bản.
“GET”, “POST”, “PUT”, “DELETE”, chúng tôi có thể sử dụng bất kỳ thứ nào trong số này theo API của chúng tôi. Những điều cơ bản vẫn giống nhau đối với từng loại yêu cầu, được hiển thị bên dưới. Hãy xem những ví dụ này với loại yêu cầu DELETE.
-
Trước hết, chúng ta cần tạo một đối tượng phiên, cấu hình mặc định.
let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration)
-
Sau đó, chúng ta cần tạo một Yêu cầu URL của Loại mà chúng ta cần, nó có thể là lấy, đăng, xóa hoặc đặt. Trong ví dụ này, chúng ta thấy loại "Xóa".
let url = URL(string: URLString) //let url = NSURL(string: urlString as String) var request : URLRequest = URLRequest(url: url!) request.httpMethod = "DELETE" request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept")
-
Khi chúng tôi đã tạo đối tượng yêu cầu, chúng tôi cần cải thiện dataTask, với URL mà chúng tôi vừa tạo ở trên. Đây là cách phương thức dataTask hoàn chỉnh của chúng ta sẽ trông giống như bây giờ.
let dataTask = session.dataTask(with: url!) { data,response,error in guard let httpResponse = response as? HTTPURLResponse, let receivedData = data else { print("error: not a valid http response") return } switch (httpResponse.statusCode) { case 200: //success response. break case 400: break default: break } } dataTask.resume()
-
Bây giờ chúng ta có thể nhúng nó vào một hàm và sử dụng trong mã của chúng ta.
hitAPI(_for URLString:String) { let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration) let url = URL(string: URLString) //let url = NSURL(string: urlString as String) var request : URLRequest = URLRequest(url: url!) request.httpMethod = "DELETE" request.addValue("application/json", forHTTPHeaderField: "Content-Type") request.addValue("application/json", forHTTPHeaderField: "Accept") let dataTask = session.dataTask(with: url!) { data,response,error in // 1: Check HTTP Response for successful GET request guard let httpResponse = response as? HTTPURLResponse, let receivedData = data else { print("error: not a valid http response") return } switch (httpResponse.statusCode) { case 200: //success response. break case 400: break default: break } } dataTask.resume() }
Lưu ý :Bạn có thể cần cho phép các ngoại lệ Bảo mật truyền tải trong tệp info.plist của mình để truy cập một số API.
Không có đầu ra nào được hiển thị với ví dụ này vì cần có API để xóa một số dữ liệu.