Swagger/OpenAPI Swift जनरेशन (iOS/macOS)
iOS और macOS के लिए मोबाइल ऐप डेवलपमेंट में अक्सर REST API के साथ इंटीग्रेशन की ज़रूरत होती है। नेटवर्क लेयर को मैन्युअल लिखना एक समय लेने वाला और गलतियों से भरा काम है। OpenAPI (Swagger) स्पेसिफिकेशन पर आधारित कोड जनरेशन टूल्स आपको टाइप-सेफ Swift मॉडल, नेटवर्क रिक्वेस्ट और पूरे API क्लाइंट ऑटोमैटिक बनाने की सुविधा देते हैं। इससे डेवलपमेंट तेज़ होता है, बग कम होते हैं, और API बदलने पर कोड मेंटेन करना आसान हो जाता है।
इस आर्टिकल में हम OpenAPI स्पेसिफिकेशन से Swift कोड जनरेट करने के मुख्य टूल्स, उनके उपयोग के उदाहरण और iOS/macOS प्रोजेक्ट्स में इंटीग्रेशन के टिप्स देखेंगे।
मुख्य जनरेशन टूल्स
आजकल कई लोकप्रिय टूल्स Swift को टार्गेट लैंग्वेज के रूप में सपोर्ट करते हैं:
- OpenAPI Generator — सबसे लोकप्रिय ओपन-सोर्स टूल। Swift 5 और Combine को सपोर्ट करता है।
- Swagger Codegen — OpenAPI Generator का पुराना वर्जन, अभी भी सपोर्टेड है लेकिन कम फ्लेक्सिबल है।
- Create API — Apple का बिल्ट-इन जनरेटर, Xcode 15+ में OpenAPI स्पेसिफिकेशन से क्लाइंट बनाने के लिए।
आइए इनमें से हर एक को विस्तार से समझते हैं।
Swift के लिए OpenAPI Generator
OpenAPI Generator एक वर्सेटाइल टूल है जिसे CLI, Docker इमेज या Gradle/Maven प्लगइन के रूप में इस्तेमाल किया जा सकता है। Swift के लिए कई जनरेटर उपलब्ध हैं:
swift5— Swift 5 पर आधारित जनरेशन, Codable, URLSession और Combine सपोर्ट के साथ।swift5-deprecated— पुराने वर्जन के लिए बैकवर्ड कम्पैटिबिलिटी।
इंस्टॉलेशन और उपयोग
सबसे आसान तरीका Docker का उपयोग करना है:
docker run --rm -v "${PWD}:/local" \
openapitools/openapi-generator-cli generate \
-i /local/spec.yaml \
-g swift5 \
-o /local/SwiftClient
इसके बाद SwiftClient फोल्डर में एक Xcode प्रोजेक्ट जनरेट होगा जिसमें मॉडल, API रिक्वेस्ट और टेस्ट शामिल होंगे।
जनरेटेड कोड का उदाहरण
मान लीजिए हमारे पास एक स्पेसिफिकेशन है जिसमें यूज़र प्राप्त करने का एंडपॉइंट है:
openapi: 3.0.0
info:
title: User API
version: 1.0.0
paths:
/users/{id}:
get:
operationId: getUserById
parameters:
- name: id
in: path
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/User'
components:
schemas:
User:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
required:
- id
- name
- email
OpenAPI Generator निम्नलिखित Swift मॉडल बनाएगा:
import Foundation
public struct User: Codable {
public let id: Int
public let name: String
public let email: String
enum CodingKeys: String, CodingKey {
case id
case name
case email
}
}
और संबंधित API मेथड:
import Foundation
import Combine
public class UserAPI {
public static func getUserById(id: Int) -> AnyPublisher<User, Error> {
var request = URLRequest(url: URL(string: "https://api.example.com/users/\(id)")!)
request.httpMethod = "GET"
return URLSession.shared.dataTaskPublisher(for: request)
.map(\.data)
.decode(type: User.self, decoder: JSONDecoder())
.eraseToAnyPublisher()
}
}
Apple का Create API (Xcode 15+)
Xcode 15 से शुरू करके, Apple ने OpenAPI के लिए बिल्ट-इन सपोर्ट जोड़ा है। अब आप सीधे प्रोजेक्ट में स्पेसिफिकेशन इम्पोर्ट कर सकते हैं और क्लाइंट जनरेट कर सकते हैं।