30 मिनट में Go पर REST API कैसे लिखें: शुरुआती लोगों के लिए गाइड

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

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

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

परिचय: Go REST API के लिए आदर्श विकल्प क्यों है

\n

Go (या Golang) Google द्वारा विकसित एक कंपाइल की जाने वाली प्रोग्रामिंग भाषा है, जो C++ के प्रदर्शन को Python की सरलता के साथ जोड़ती है। यदि आप एक तेज़, विश्वसनीय और आसानी से बनाए रखने योग्य REST API बनाना चाहते हैं, तो Go सबसे अच्छे विकल्पों में से एक है। इस लेख में, हम 30 मिनट में Go पर एक पूर्ण REST API लिखेंगे जो रिकॉर्ड बना सकता है, पढ़ सकता है, अपडेट कर सकता है और हटा सकता है (CRUD)। कोई जटिल फ्रेमवर्क नहीं - केवल मानक लाइब्रेरी net/http और थोड़ा कोड।

\n

लेख के अंत तक, आपके पास एक तैयार HTTP सर्वर होगा जो JSON प्रारूप में अनुरोधों का जवाब देता है और बिना किसी बाहरी निर्भरता के काम करता है। चलिए शुरू करते हैं!

\n\n

चरण 1: प्रोजेक्ट सेटअप और संरचना

\n

शुरू करने के लिए, सुनिश्चित करें कि आपके पास Go (संस्करण 1.16+) स्थापित है। प्रोजेक्ट के लिए एक नई निर्देशिका बनाएं और मॉड्यूल को इनिशियलाइज़ करें:

\n
mkdir go-rest-api\ncd go-rest-api\ngo mod init go-rest-api
\n

प्रोजेक्ट की संरचना सरल होगी - एक फ़ाइल main.go। हम सारा कोड इसमें रखेंगे ताकि उदाहरण जटिल न हो। वास्तविक प्रोजेक्ट में, आप निश्चित रूप से कोड को पैकेजों में विभाजित करेंगे, लेकिन सीखने के लिए यह आदर्श विकल्प है।

\n\n

चरण 2: डेटा संरचना और वैश्विक भंडारण को परिभाषित करें

\n

हमारा API पुस्तकों की सूची का प्रबंधन करेगा। आइए एक Book संरचना और मेमोरी में डेटा संग्रहीत करने के लिए एक सरल स्लाइस बनाएं (डेटाबेस के बजाय)।

\n
package main\n\nimport (\n    "encoding/json"\n    "log"\n    "net/http"\n    "strconv"\n    "strings"\n)\n\ntype Book struct {\n    ID     int    `json:"id"`\n    Title  string `json:"title"`\n    Author string `json:"author"`\n    Year   int    `json:"year"`\n}\n\nvar books []Book\nvar nextID int = 1
\n

यहाँ books हमारी अस्थायी "डेटा परत" है, और nextID नई पुस्तकों को स्वचालित रूप से ID निर्दिष्ट करने के लिए एक काउंटर है।

\n\n

चरण 3: HTTP अनुरोध हैंडलर (CRUD) लागू करें

\n

अब सबसे दिलचस्प हिस्सा - आइए प्रत्येक HTTP विधि के लिए हैंडलर फ़ंक्शन लिखें। हम मानक राउटर http.NewServeMux का उपयोग करेंगे।

\n\n

3.1. सभी पुस्तकें प्राप्त करें (GET /books)

\n
func getBooks(w http.ResponseWriter, r *http.Request) {\n    w.Header().Set("Content-Type", "application/json")\n    json.NewEncoder(w).Encode(books)\n}
\n\n

3.2. नई पुस्तक बनाएं (POST /books)

\n
func createBook(w http.ResponseWriter, r *http.Request) {\n    var newBook Book\n    if err := json.NewDecoder(r.Body).Decode(&newBook); err != nil {\n        http.Error(w, "Invalid JSON", http.StatusBadRequest)\n        return\n    }\n    newBook.ID = nextID\n    nextID++\n    books = append(books, newBook)\n    w.Header().Set("Content-Type", "application/json")\n    w.WriteHeader(http.StatusCreated)\n    json.NewEncoder(w).Encode(newBook)\n}
\n\n

3.3. ID द्वारा एक पुस्तक प्राप्त करें (GET /books/{id})

\n

मानक ServeMux में डायनामिक पथों के लिए समर्थन नहीं है, इसलिए हम मैन्युअल रूप से URL से ID निकालेंगे।

\n
func getBook(w http.ResponseWriter, r *http.Request) {\n    idStr := strings.TrimPrefix(r.URL.Path, "/books/")\n    id, err := strconv.Atoi(idStr)\n    if err != nil {\n        http.Error(w, "Invalid ID", http.StatusBadRequest)\n        return\n    }\n    for _, book := range books {\n        if book.ID == id {\n            w.Header().Set("Content-Type", "application/json")\n            json.NewEncoder(w).Encode(book)\n            return\n        }\n    }\n    http.Error(w, "Book not found", http.StatusNotFound)\n}
\n\n

3.4. पुस्तक अपडेट करें (PUT /books/{id})

\n
func updateBook(w http.ResponseWriter, r *http.Request) {\n    idStr := strings.TrimPrefix(r.URL.Path, "/books/")\n    id, err := strconv.Atoi(idStr)\n    if err != nil {\n        http.Error(w, "Invalid ID", http.StatusBadRequest)\n        return\n    }\n    var updatedBook Book\n    if err := json.NewDecoder(r.Body).Decode(&updatedBook); err != nil {\n        h                

ब्लॉग

पुस्तक अनुशंसाएँ