Swagger/OpenAPI जनरेशन Go (Golang) के लिए
Go (Golang) में वेब सेवाएँ विकसित करते समय, प्रमुख कार्यों में से एक गुणवत्तापूर्ण और अद्यतित API डॉक्यूमेंटेशन बनाना है। Swagger (अब OpenAPI के नाम से जाना जाता है) RESTful इंटरफेस का वर्णन करने के लिए उद्योग मानक बन गया है। इस लेख में, हम Go इकोसिस्टम में OpenAPI स्पेसिफिकेशन जनरेट करने के लिए मुख्य टूल, उनकी स्थापना, कॉन्फ़िगरेशन और व्यावहारिक उपयोग पर चर्चा करेंगे।
Go डेवलपर के लिए OpenAPI क्यों महत्वपूर्ण है?
OpenAPI आपको अपने API का मशीन-पठनीय विवरण बनाने की अनुमति देता है, जिसका उपयोग इसके लिए किया जा सकता है:
- विभिन्न भाषाओं में क्लाइंट लाइब्रेरीज़ का स्वचालित जनरेशन
- इंटरैक्टिव डॉक्यूमेंटेशन (Swagger UI) बनाना
- आने वाले और जाने वाले अनुरोधों का सत्यापन
- Postman या Insomnia जैसे टूल का उपयोग करके API परीक्षण
Go में OpenAPI जनरेशन के लिए मुख्य लाइब्रेरीज़
1. swaggo/swag — सबसे लोकप्रिय विकल्प
लाइब्रेरी swaggo/swag Go में Swagger डॉक्यूमेंटेशन जनरेट करने के लिए डी-फैक्टो मानक है। यह कोड में टिप्पणियों में एनोटेशन पर आधारित काम करती है।
स्थापना:
go get -u github.com/swaggo/swag/cmd/swaggo get -u github.com/swaggo/gin-swagger // Gin फ्रेमवर्क के लिएgo get -u github.com/swaggo/filesGin के साथ उपयोग का उदाहरण:
package main
import ( "github.com/gin-gonic/gin" "github.com/swaggo/gin-swagger" "github.com/swaggo/files" _ "your-module/docs" // जनरेटेड पैकेज)
// @title My API// @version 1.0// @description Swagger के साथ Go पर API का उदाहरण// @host localhost:8080// @BasePath /api/v1
func main() { r := gin.Default() r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) r.GET("/api/v1/users", GetUsers) r.Run(":8080")}
// GetUsers उपयोगकर्ताओं की सूची लौटाता है// @Summary उपयोगकर्ताओं की सूची प्राप्त करें// @Description सिस्टम के सभी उपयोगकर्ताओं को लौटाता है// @Tags users// @Accept json// @Produce json// @Success 200 {array} User// @Router /users [get]func GetUsers(c *gin.Context) { users := []User{{ID: 1, Name: "इवान"}} c.JSON(200, users)}
type User struct { ID int `json:"id" example:"1"` Name string `json:"name" example:"इवान"`}कोड लिखने के बाद, कमांड चलाएँ:
swag initयह docs फ़ोल्डर बनाएगा जिसमें swagger.json और swagger.yaml फ़ाइलें होंगी।
2. go-swagger — शक्तिशाली लेकिन अधिक जटिल टूल
go-swagger न केवल कोड से डॉक्यूमेंटेशन जनरेशन प्रदान करता है, बल्कि विपरीत प्रक्रिया भी प्रदान करता है — स्पेसिफिकेशन से कोड जनरेशन।
स्थापना:
go get -u github.com/go-swagger/go-swagger/cmd/swaggerस्पेसिफिकेशन से सर्वर जनरेशन का उदाहरण:
swagger generate server -f ./swagger.yaml -A my-apiकोड से डॉक्यूमेंटेशन जनरेशन:
// swagger:route GET /users users listUsers// उपयोगकर्ताओं की सूची लौटाता है।// responses:// 200: usersResponse
func ListUsersHandler(w http.ResponseWriter, r *http.Request) { // कार्यान्वयन}3. oapi-codegen — कोड जनरेशन के साथ आधुनिक दृष्टिकोण
लाइब्रेरी oapi-codegen OpenAPI स्पेसिफिकेशन के आधार पर प्रकार, सर्वर स्टब्स और क्लाइंट जनरेट करने की अनुमति देती है।
स्थापना:
go get -u github.com/deepmap/oapi-codegen/cmd/oapi-codegenउपयोग का उदाहरण:
पहले api.yaml फ़ाइल बनाएँ:
openapi: "3.0.0"info: title: My API version: "1.0"paths: /users: get: oper