Go (Golang) के लिए Swagger/OpenAPI जनरेशन: go-swagger और oapi-codegen

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

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

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

Go (Golang) के लिए Swagger/OpenAPI जनरेशन: go-swagger और oapi-codegen

Go में आधुनिक वेब-सर्विसेज डेवलप करने के लिए API की सख्त स्पेसिफिकेशन ज़रूरी है। OpenAPI (जिसे पहले Swagger के नाम से जाना जाता था) RESTful इंटरफेस का वर्णन करने का एक मानक है, जो क्लाइंट, सर्वर और डॉक्यूमेंटेशन को ऑटोमेटेड तरीके से बनाने में मदद करता है। Go इकोसिस्टम में OpenAPI स्पेसिफिकेशन से कोड जनरेट करने के लिए दो मुख्य टूल हैं: go-swagger और oapi-codegen। इस लेख में हम दोनों तरीकों, उनकी स्थापना और व्यावहारिक उपयोग पर विस्तार से चर्चा करेंगे।

OpenAPI क्या है और कोड क्यों जनरेट करें?

OpenAPI Specification (OAS) एक फ़ाइल फ़ॉर्मेट (आमतौर पर YAML या JSON) है जो आपके API के एंडपॉइंट, पैरामीटर, डेटा टाइप और रिस्पॉन्स स्कीमा का वर्णन करता है। मैन्युअल रूप से हैंडलर, मॉडल और वैलिडेशन लिखने के बजाय, आप यह कर सकते हैं:

  • रूट्स और मिडलवेयर के साथ सर्वर साइड कोड जनरेट करें।
  • अन्य सर्विसेज के लिए क्लाइंट SDK जनरेट करें।
  • डॉक्यूमेंटेशन (Swagger UI) को ऑटोमेटिकली अपडेट करें।
  • स्पेसिफिकेशन और इम्प्लीमेंटेशन के बीच असंगति से बचें।

टूल #1: go-swagger

go-swagger एक शक्तिशाली लेकिन भारी टूल है जो स्पेसिफिकेशन जनरेशन के साथ-साथ वैलिडेशन भी सपोर्ट करता है। यह वर्जनिंग वाले जटिल प्रोजेक्ट्स के लिए आदर्श है।

go-swagger की स्थापना

# go install के माध्यम से स्थापना (Go 1.17+)
go install github.com/go-swagger/go-swagger/cmd/swagger@latest

# स्थापना की जाँच
swagger version

स्पेसिफिकेशन से सर्वर जनरेशन

मान लीजिए हमारे पास api.yaml फ़ाइल है:

openapi: "3.0.0"
info:
  title: Pet Store
  version: "1.0.0"
paths:
  /pets:
    get:
      summary: सभी पालतू जानवरों की सूची
      operationId: listPets
      responses:
        '200':
          description: पालतू जानवरों की सूची
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Pet'
components:
  schemas:
    Pet:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string

सर्वर जनरेशन चलाएँ:

swagger generate server -f api.yaml -A petstore -t ./gen

इसे चलाने के बाद ./gen फ़ोल्डर में ये फ़ाइलें बनेंगी:

  • restapi/ — हैंडलर और रूट्स।
  • models/ — डेटा स्ट्रक्चर (Pet, Error आदि)।
  • cmd/ — एप्लिकेशन का एंट्री पॉइंट।

हैंडलर इम्प्लीमेंटेशन का उदाहरण

package restapi

import (
    "net/http"
    "petstore/gen/models"
    "petstore/gen/restapi/operations"
)

func configureAPI(api *operations.PetstoreAPI) http.Handler {
    api.ListPetsHandler = operations.ListPetsHandlerFunc(
        func(params operations.ListPetsParams) middleware.Responder {
            pets := []*models.Pet{
                {ID: 1, Name: "बडी"},
                {ID: 2, Name: "माइलो"},
            }
            return operations.NewListPetsOK().WithPayload(pets)
        },
    )
    return api.Serve(nil)
}

टूल #2: oapi-codegen

oapi-codegen DeepMap टीम का एक आधुनिक, हल्का और बहुत तेज़ जनरेटर है। यह OpenAPI 3.0 को सपोर्ट करता है और मिनिमलिज़्म पर फोकस करता है। नए प्रोजेक्ट्स के लिए इसकी सिफारिश की जाती है।

oapi-codegen की स्थापना

go install github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen@latest

टाइप्स और सर्वर जनरेशन

उसी api.yaml स्पेसिफिकेशन का उपयोग करें। यह चलाएँ:

oapi-codegen -generate types,server -package petstore api.yaml > petstore.gen.go

-generate फ़्लैग से आप चुन सकते हैं कि क्या जनरेट करना है:

  • types — स्कीमा के लिए Go स्ट्रक्चर।
  • server — सर्वर इंटरफेस।
  • client — क्लाइंट कोड।

अनुशंसाएँ