HTTP सर्वर बनाना
ListenAndServe, HandlerFunc और ServeMux
HTTP सर्वर बनाना, CoddyKit पर Go Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Go Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
net/http पैकेज
Go की मानक लाइब्रेरी net/http बाहरी निर्भरताओं के बिना उत्पादन-उपयोग के योग्य HTTP/1.1 और HTTP/2 सर्वर उपलब्ध कराती है।
बुनियादी सर्वर
http.HandleFunc के साथ हैंडलर पंजीकृत करें और http.ListenAndServe के साथ सुनना शुरू करें:
http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello, World!")
})
log.Fatal(http.ListenAndServe(":8080", nil))http.Handler इंटरफ़ेस
ServeHTTP(ResponseWriter, *Request) लागू करने वाला कोई भी प्रकार http.Handler होता है। डेटाबेस या कॉन्फ़िगरेशन रखने वाले स्थिति-संपन्न हैंडलर के लिए इसका उपयोग करें।
type App struct{ db *sql.DB }
func (a *App) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// use a.db
}ServeMux
http.NewServeMux() एक अलग राउटर बनाता है। वैश्विक डिफ़ॉल्ट mux से बचने के लिए इसे http.ListenAndServe में दें; लाइब्रेरी में यह अधिक सुरक्षित होता है।
mux := http.NewServeMux()
mux.HandleFunc("/api/users", usersHandler)
http.ListenAndServe(":8080", mux)स्थिति कोड के साथ प्रतिक्रिया देना
बॉडी लिखने से पहले w.WriteHeader(code) से स्थिति कोड लिखें। यदि आप केवल w.Write कॉल करते हैं, तो स्थिति डिफ़ॉल्ट रूप से 200 होती है।
w.WriteHeader(http.StatusCreated)
w.Write([]byte("created"))JSON प्रतिक्रियाएँ लिखना
बॉडी लिखने से पहले Content-Type सेट करें, फिर json.Encoder से एन्कोड करें:
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(data)अनुरोध पढ़ना
*Request संरचना के माध्यम से विधि, URL, हेडर, क्वेरी पैरामीटर और बॉडी तक पहुँचें।
r.Method // "GET", "POST", ...
r.URL.Path // "/api/users"
r.URL.Query().Get("id") // query param
r.Header.Get("Authorization")JSON अनुरोध बॉडी का विश्लेषण
json.Decoder से अनुरोध बॉडी को डिकोड करें। मेमोरी समाप्त होने से बचाने के लिए http.MaxBytesReader से बॉडी का आकार सीमित करें।
r.Body = http.MaxBytesReader(w, r.Body, 1<<20)
var req CreateUserRequest
json.NewDecoder(r.Body).Decode(&req)सर्वर कॉन्फ़िगरेशन
धीमे-क्लाइंट हमलों से बचने के लिए कस्टम http.Server में समय-सीमाएँ कॉन्फ़िगर करें:
srv := &http.Server{
Addr: ":8080",
Handler: mux,
ReadTimeout: 5 * time.Second,
WriteTimeout: 10 * time.Second,
IdleTimeout: 120 * time.Second,
}
srv.ListenAndServe()HTTPS
HTTPS उपलब्ध कराने के लिए srv.ListenAndServeTLS(certFile, keyFile) का उपयोग करें। प्रमाणपत्र स्वयं-हस्ताक्षरित (विकास के लिए) या Let's Encrypt से प्राप्त (golang.org/x/crypto/acme/autocert के माध्यम से उत्पादन के लिए) हो सकते हैं।
हैंडलर संयोजन
व्यावसायिक लॉजिक में बदलाव किए बिना साझा सरोकार (लॉगिंग, प्रमाणीकरण, पुनर्प्राप्ति) जोड़ने के लिए हैंडलर को लपेटें। बदलाव करने के बाद अगला हैंडलर लौटाएँ।
त्वरित जाँच
http.Server पर ReadTimeout और WriteTimeout क्यों सेट करने चाहिए?
पुनरावलोकन: HTTP सर्वर बनाना
मुख्य बिंदु:
- सरल सर्वर के लिए HandleFunc + ListenAndServe
- उत्पादन के लिए समय-सीमाओं वाला कस्टम http.Server
- अलग रूटिंग के लिए ServeMux
- JSON प्रतिक्रियाओं के लिए json.NewEncoder(w)
एआई शिक्षक के साथ Go सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “HTTP सर्वर बनाना” पाठ निःशुल्क है?
हाँ — Go Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “HTTP सर्वर बनाना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“HTTP सर्वर बनाना” में मैं क्या सीखूँगा?
ListenAndServe, HandlerFunc और ServeMux आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Go Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Go Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Go Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“HTTP सर्वर बनाना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Go Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Go Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- HTTP सर्वर बनाना
- रूटिंग और पथ पैरामीटर
- मिडलवेयर प्रतिरूप
- शालीनतापूर्ण शटडाउन