ในการสร้างคำขอ http ใน iOS เราจะใช้ประโยชน์จาก DataTask และเซสชัน เราจะสร้างออบเจ็กต์การกำหนดค่า เซสชัน url คำขอ และ dataTask มาดูขั้นตอนกันเลยดีกว่า
คำขอ HTTP สามารถเป็นได้หลายประเภท ขึ้นอยู่กับประเภทของคำขอที่เราต้องการส่งไปยังเซิร์ฟเวอร์ของเรา ด้านล่างนี้คือประเภทคำขอพื้นฐาน
“GET”,”POST”,”PUT”,”DELETE” เราสามารถใช้ประโยชน์จากสิ่งเหล่านี้ตาม API ของเราได้ ข้อมูลพื้นฐานยังคงเหมือนเดิมสำหรับคำขอแต่ละประเภทดังแสดงด้านล่าง มาดูตัวอย่างเหล่านี้กับประเภทคำขอ DELETE
-
ขั้นแรกเราต้องสร้าง session object ซึ่งเป็นการกำหนดค่าเริ่มต้น
let configuration = URLSessionConfiguration.default let session = URLSession(configuration: configuration)
-
จากนั้นเราต้องสร้างคำขอ URL แบบที่เราต้องการ สามารถรับ โพสต์ ลบ หรือใส่ได้ ในตัวอย่างนี้ เราเห็นประเภท ”ลบ”
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") -
เมื่อเราสร้างวัตถุคำขอแล้ว เราจำเป็นต้องดำเนินการ dataTask ด้วย URL ที่เราเพิ่งสร้างขึ้นด้านบน นี่คือลักษณะวิธีการ dataTask ที่สมบูรณ์ของเราในตอนนี้
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() -
ตอนนี้เราสามารถฝังสิ่งนี้ในฟังก์ชันและใช้ในโค้ดของเราได้
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()
} หมายเหตุ :คุณอาจต้องอนุญาตข้อยกเว้น Transport Security ในไฟล์ info.plist เพื่อเข้าถึง API บางตัว
ไม่มีผลลัพธ์ที่แสดงในตัวอย่างนี้ เนื่องจากจำเป็นต้องมี API เพื่อลบข้อมูลบางส่วน