30 मिनट में Go पर REST API कैसे लिखें: चरण-दर-चरण मार्गदर्शिका

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

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

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

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



Go (या Golang) एक आधुनिक कंपाइल्ड प्रोग्रामिंग भाषा है, जिसे Google में बनाया गया है। यह C++ की परफॉरमेंस और Python की सरलता को जोड़ती है, जो इसे उच्च-लोड वाली वेब सेवाओं और REST API बनाने के लिए एक आदर्श विकल्प बनाती है। कई अन्य भाषाओं के विपरीत, Go में HTTP सर्वर, मल्टीथ्रेडिंग और तेज़ कंपाइलेशन के लिए बिल्ट-इन सपोर्ट है।



इस गाइड में, हम चरण दर चरण कार्यों की सूची (Todo List) को प्रबंधित करने के लिए एक पूर्ण REST API बनाएंगे। आप सीखेंगे:

  • Go पर HTTP सर्वर सेट अप करना
  • JSON अनुरोधों और प्रतिक्रियाओं के साथ काम करना
  • CRUD ऑपरेशन (Create, Read, Update, Delete) लागू करना
  • curl या Postman के साथ API का परीक्षण करना


पूरी प्रक्रिया में आपको 30 मिनट से अधिक नहीं लगेंगे। चलिए शुरू करते हैं!



1. प्रोजेक्ट की स्थापना और सेटअप



कोड लिखने से पहले, सुनिश्चित करें कि आपके पास Go स्थापित है। इसे इस कमांड से जांचा जा सकता है:

go version


यदि Go स्थापित नहीं है, तो आधिकारिक वेबसाइट से नवीनतम संस्करण डाउनलोड करें।



प्रोजेक्ट के लिए एक नई डायरेक्टरी बनाएं और मॉड्यूल को इनिशियलाइज़ करें:

mkdir go-rest-apicd go-rest-apigo mod init go-rest-api


अब एक फ़ाइल main.go बनाएं — इसमें हमारा सारा कोड होगा। रूटिंग के साथ काम करने की सुविधा के लिए, हम मानक लाइब्रेरी net/http का उपयोग करेंगे, जो पहले से Go में बनी हुई है। किसी तीसरे पक्ष की निर्भरता की आवश्यकता नहीं है — यह भाषा के मुख्य लाभों में से एक है।



2. डेटा संरचना और भंडारण को परिभाषित करना



आइए डेटा मॉडल का वर्णन करके शुरू करें। सरलता के लिए, हम कार्यों को डेटाबेस के बजाय मेमोरी (एक स्लाइस में) में संग्रहीत करेंगे। आइए एक Task संरचना और एक वैश्विक ID काउंटर बनाएं:



package main

import ( "encoding/json" "log" "net/http" "strconv" "strings" "sync")

// Task एक कार्य का प्रतिनिधित्व करता हैtype Task struct { ID int `json:"id"` Title string `json:"title"` Done bool `json:"done"`}

// कार्यों का भंडारण (मेमोरी में)var ( tasks []Task nextID int = 1 mu sync.Mutex)


sync.Mutex पर ध्यान दें — यह डेटा तक थ्रेड-सेफ पहुंच के लिए आवश्यक है, क्योंकि Go सर्वर अनुरोधों को समानांतर रूप से संसाधित कर सकता है।



3. CRUD ऑपरेशन लागू करना



अब प्रत्येक HTTP विधि के लिए मुख्य हैंडलर लिखते हैं। हम URL द्वारा रूटिंग पैटर्न का उपयोग करेंगे:

  • GET /tasks — सभी कार्य प्राप्त करें
  • POST /tasks — एक नया कार्य बनाएं
  • GET /tasks/{id} — ID द्वारा कार्य प्राप्त करें
  • PUT /tasks/{id} — कार्य अपडेट करें
  • DELETE /tasks/{id} — कार्य हटाएं


3.1. सभी कार्य प्राप्त करना (GET /tasks)

func getTasks(w http.ResponseWriter, r *http.Request) {    mu.Lock()    defer mu.Unlock()

w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(tasks)}


3.2. कार्य बनाना (POST /tasks)

func createTask(w http.ResponseWriter, r *http.Request) {    var newTask Task    if err := json.NewDecoder(r.Body).Decode(&newTask); err != nil {        http.Error(w, "Invalid JSON", http.StatusBadRequest)        return    }

mu.Lock() newTask.ID = nextID nextID++ tasks = append(tasks, newTask) mu.Unlock()

w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusCreated) json.NewEncoder(w).Encode(newTask)}


3.3. ID द्वारा प्राप्त करना, अपडेट करना और हटाना

इन ऑपरेशनों के लिए, हमें URL से ID निकालने की आवश्यकता है। Go की मानक लाइब्रेरी में कोई बिल्ट-इन पाथ पार्सर नहीं है, इसलिए हम एक सरल उपयोगिता लिखेंगे:



                

ब्लॉग

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