في هذا الفصل، سنقدم برمجة الويب go وJson لإنشاء خدمة ويب API مع أنواع بيانات الاستجابة في شكل واجهة برمجة التطبيقات.
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}, }
يتم استخدام بنية الطالب أعلاه كنموذج لنوع عنصر شريحة البيانات، المخزن في متغير البيانات.
بعد ذلك، قم بإنشاء وظيفة user() للتعامل مع نقطة النهاية /users. توجد في هذه الوظيفة عملية اكتشاف نوع الطلب عبر خاصية r.Method()، لمعرفة ما إذا كان نوع الطلب هو Post أو Get أو أي شيء آخر.
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().
قم أيضًا بإعداد معالج لنقطة النهاية /user. الفرق بين نقطة النهاية هذه و
/المستخدمون أعلاه هم:
تقوم نقطة النهاية /users بإرجاع كافة نماذج البيانات الموجودة (المصفوفة).
تقوم نقطة النهاية /user بإرجاع جزء واحد فقط من البيانات، مأخوذة من البيانات
العينة على أساس معرفها. عند نقطة النهاية هذه، يجب على العميل إرسال
أيضًا معلومات معرف البيانات المطلوبة
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