"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > خادم واجهة برمجة تطبيقات خدمة الويب في Go

خادم واجهة برمجة تطبيقات خدمة الويب في Go

تم النشر بتاريخ 2024-07-31
تصفح:897

Web Service Api Server in Go

في هذا الفصل، سنقدم برمجة الويب go وJson لإنشاء خدمة ويب API مع أنواع بيانات الاستجابة في شكل واجهة برمجة التطبيقات.

  1. واجهة برمجة تطبيقات إنشاء الويب قم بإعداد بعض بيانات العينة أولاً
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)
}

قم بتشغيل البرنامج، والآن أصبح خادم الويب نشطًا ويمكن استهلاك البيانات.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/sukmarizki04/web-service-api-server-in-go-efl?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3