Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> iOS

วิธีสร้าง HTTP Request ใน iOS App ด้วย Swift

การสร้าง HTTP request ใน iOS ใช้ URLSession และ URLSessionDataTask ขั้นตอนหลัก: สร้าง configuration, session, URL, request, และ dataTask รองรับทุก HTTP method (GET, POST, PUT, DELETE)

ขั้นตอนการสร้าง Request

1. สร้าง Session

let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)

2. สร้าง URL Request (ตัวอย่าง DELETE)

let url = URL(string: URLString)!
var request = URLRequest(url: url)
request.httpMethod = "DELETE"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")

3. สร้างและรัน Data Task

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
        break
    case 400:
        // bad request
        break
    default:
        break
    }
}
dataTask.resume()

ฟังก์ชันครบถ้วน

func hitAPI(for URLString: String) {
    let configuration = URLSessionConfiguration.default
    let session = URLSession(configuration: configuration)
    let url = URL(string: URLString)!
    var request = 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
        guard let httpResponse = response as? HTTPURLResponse,
              let receivedData = data else {
            print("error: not a valid http response")
            return
        }
        switch httpResponse.statusCode {
        case 200: break
        case 400: break
        default: break
        }
    }
    dataTask.resume()
}

หมายเหตุ: อาจต้องตั้งค่า App Transport Security ใน Info.plist เพื่อเข้าถึง API บางตัว