Swagger/OpenAPI Swift कोड जनरेशन: टूल्स और उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

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 के लिए बिल्ट-इन सपोर्ट जोड़ा है। अब आप सीधे प्रोजेक्ट में स्पेसिफिकेशन इम्पोर्ट कर सकते हैं और क्लाइंट जनरेट कर सकते हैं।

अनुशंसाएँ