Swift में नेटिव URLSession के साथ REST API एक्सेस करना
Swift में REST API एक्सेस करने के लिए हमें Swift में नेटिव नेटवर्किंग के तरीके का उपयोग करके चरणों की एक श्रृंखला से गुजरना होगा, जो URL सेशन्स और डेटा टास्क का उपयोग कर रहा है।
REST का मतलब Representational State Transfer है, जो वेब सेवाओं द्वारा उपयोग किए जाने वाले कुछ कंस्ट्रेंट्स के सेट को परिभाषित करता है। Swift में, हम वेब सेवाओं को निम्नलिखित तरीके से एक्सेस कर सकते हैं।
चरण:
- सबसे पहले, हमें डिफ़ॉल्ट कॉन्फिगरेशन के साथ एक सेशन ऑब्जेक्ट बनाने की आवश्यकता है।
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
- फिर हमें जिस प्रकार की आवश्यकता है उसके URL रिक्वेस्ट बनाने की आवश्यकता है, यह GET, POST, DELETE या PUT हो सकता है। इस उदाहरण में, हम "GET" प्रकार देख रहे हैं।
let url = URL(string: URLString)
var request: URLRequest = URLRequest(url: url!)
request.httpMethod = "GET"
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 = "GET"
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 की आवश्यकता होती है।