URLSession के साथ HTTP रिक्वेस्ट करना
iOS में HTTP रिक्वेस्ट करने के लिए हम DataTask और सेशन्स का उपयोग करेंगे। हम कॉन्फिगरेशन, सेशन्स, URL, रिक्वेस्ट, और dataTask ऑब्जेक्ट बनाएंगे। आइए उन चरणों को देखें जिनसे हम गुजरेंगे।
HTTP रिक्वेस्ट विभिन्न प्रकार की हो सकती है, यह इस पर निर्भर करता है कि हम अपने सर्वर पर किस तरह की रिक्वेस्ट करना चाहते हैं। नीचे रिक्वेस्ट के बुनियादी प्रकार हैं।
"GET", "POST", "PUT", "DELETE" - हम इनमें से किसी का भी उपयोग अपने API के अनुसार कर सकते हैं। बेसिक्स प्रत्येक प्रकार की रिक्वेस्ट के लिए समान रहते हैं, जो नीचे दिखाए गए हैं। आइए इन उदाहरणों को DELETE प्रकार की रिक्वेस्ट के साथ देखें।
चरण:
- सबसे पहले हमें डिफ़ॉल्ट कॉन्फिगरेशन के साथ एक सेशन ऑब्जेक्ट बनाने की आवश्यकता है।
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
- फिर हमें जिस प्रकार की आवश्यकता है उसके URL रिक्वेस्ट बनाने की आवश्यकता है, यह GET, POST, DELETE या PUT हो सकता है। इस उदाहरण में हम "DELETE" प्रकार देख रहे हैं।
let url = URL(string: URLString)
var request: URLRequest = URLRequest(url: url!)
request.httpMethod = "DELETE"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
- एक बार जब हम रिक्वेस्ट ऑब्जेक्ट बना लेते हैं, तो हमें ऊपर बनाए गए URL के साथ dataTask करने की आवश्यकता होती है। इस तरह हमारा पूरा 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()
- अब हम इसे एक फंक्शन में एम्बेड कर सकते हैं और अपने कोड में उपयोग कर सकते हैं।
func hitAPI(_for URLString: String) {
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
let url = URL(string: URLString)
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
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()
}
नोट: कुछ API एक्सेस करने के लिए आपको अपनी info.plist फाइल में Transport Security एक्सेप्शन की अनुमति देनी पड़ सकती है।
इस उदाहरण के साथ कोई आउटपुट नहीं दिखाया गया है क्योंकि कुछ डेटा डिलीट करने के लिए एक API की आवश्यकता होती है।