इस अध्याय में, हम एपीआई के रूप में प्रतिक्रिया डेटा प्रकारों के साथ एक एपीआई वेब सेवा बनाने के लिए गो और जेसन वेब प्रोग्रामिंग प्रस्तुत करेंगे।
package main import "encoding/json" import "net/http" import "fmt" type student struct { ID string Name string Grade int } var data = []student{ student{"E001", "ethan", 21}, student{"W001", "wick", 22}, student{"B001", "bourne", 23}, student{"B002", "bond", 23}, }
उपरोक्त छात्र संरचना का उपयोग डेटा चर में संग्रहीत नमूना डेटा स्लाइस तत्व प्रकार के रूप में किया जाता है।
इसके बाद, /users एंडपॉइंट को संभालने के लिए एक user() फ़ंक्शन बनाएं। इस फ़ंक्शन में r.Method() प्रॉपर्टी के माध्यम से एक अनुरोध प्रकार का पता लगाने की प्रक्रिया होती है, ताकि यह पता लगाया जा सके कि अनुरोध प्रकार पोस्ट है या गेट या कुछ और।
func users(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method == "GET" { var result, err = json.Marshal(data) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Write(result) return } http.Error(w, "", http.StatusBadRequest) }
यदि अनुरोध GET (डेटा पुनर्प्राप्त करें) है, तो डेटा JSON में एन्कोड किया गया है
प्रतिक्रिया के रूप में उपयोग किया जाता है।
W.Header().Set("Content-Type", "application/json") स्टेटमेंट का उपयोग
के लिए किया जाता है
प्रतिक्रिया प्रकार, अर्थात् JSON निर्धारित करें। जबकि r.Write()
डेटा को प्रतिक्रिया के रूप में पंजीकृत करने के लिए उपयोग किया जाता है।
अन्यथा, यदि अनुरोध अमान्य है, तो प्रतिक्रिया को त्रुटि के रूप में सेट किया जाता है
http.Error() फ़ंक्शन।
/उपयोगकर्ता समापन बिंदु के लिए एक हैंडलर भी सेट करें। इस समापन बिंदु और
के बीच अंतर
/उपयोगकर्ता ऊपर है:
/उपयोगकर्ता समापन बिंदु सभी मौजूदा नमूना डेटा (सरणी) लौटाता है।
/उपयोगकर्ता एंडपॉइंट डेटा से लिया गया डेटा का केवल एक टुकड़ा लौटाता है
इसकी आईडी के आधार पर नमूना। इस समापन बिंदु पर, ग्राहक को भेजना होगा
मांगे जा रहे डेटा की आईडी जानकारी भी
func user(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method == "GET" { var id = r.FormValue("id") var result []byte var err error for _, each := range data { if each.ID == id { result, err = json.Marshal(each) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } w.Write(result) return } } http.Error(w, "User not found", http.StatusNotFound) return } http.Error(w, "", http.StatusBadRequest) }
r.FormValue() विधि का उपयोग
से भेजे गए फॉर्म डेटा को पुनः प्राप्त करने के लिए किया जाता है।
क्लाइंट, इस संदर्भ में संदर्भित डेटा आईडी है।
इस आईडी का उपयोग करके प्रासंगिक डेटा खोजा जाता है। अगर वहाँ है, तो
प्रतिक्रिया के रूप में लौटाया गया। यदि नहीं है तो त्रुटि 400, ख़राब अनुरोध
उपयोगकर्ता नहीं मिला संदेश के साथ लौटा।
अंत में, ऊपर दिए गए दो हैंडलर को लागू करें।
func main() { http.HandleFunc("/users", users) http.HandleFunc("/user", user) fmt.Println("starting web server at http://localhost:8080/") http.ListenAndServe(":8080", nil) }
प्रोग्राम चलाएँ, अब वेब सर्वर लाइव है और डेटा का उपभोग किया जा सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3