إنشاء واجهات برمجة تطبيقات RESTful مع إطار عمل Gin
نشرت: 2022-09-02هل تتطلع إلى إنشاء واجهة برمجة تطبيقات REST بمساعدة إطار عمل Gin؟ بعد ذلك ، يجب أن تعطي هذه المدونة قراءة شاملة. من خلال خطوات بسيطة ، ستتعلم إنشاء واجهة برمجة تطبيقات أساسية ، وبعد ذلك يمكنك تنفيذ مشاريع معقدة أخرى. ونعم ، يمكنك العمل بنفسك دون الاستفادة من خدمات تطوير Golang . ولكن ، قبل أن نبدأ ، كن على دراية بالجانب النظري لإطار عمل Gin.
- المهمة الأولى لإنجازها
- تحتاج إلى إنشاء دليل أولاً في مساحة العمل الخاصة بك. ستستخدم موجه الأوامر إذا كنت تستخدم جهاز كمبيوتر يعمل بنظام Windows. استخدم Terminal إذا كنت تستخدم macOS أو Linux كنظام تشغيل خاص بك.
- سأستخدم موجه الأوامر في هذا السيناريو.
cd go-workspace
وظيفة mkdir
وظيفة القرص المضغوط
الشفرة .
عندما نكتب الكود ، سنرى إطلاق VS Code. في حالتك ، قد يكون IDE أو محررًا مختلفًا.
- ابدأ برمز VS
- أول شيء سنفعله هو إنشاء ملف main.go. بعد ذلك ، يتعين علينا تنزيل إطار عمل gin لإنشاء واجهات برمجة تطبيقات REST.
- علينا الآن إنشاء ملف go.mod. نكتب:
انتقل إلى mod init golang.com/job
- بعد إنشاء ملف go.mod ، سنكتب:
اذهب للحصول على github.com/gin-gonic/gin
سيؤدي هذا إلى إنشاء ملف go.sum بالإضافة إلى جميع الحزم الضرورية المتعلقة بإطار عمل gin المراد تنزيلها.
- لنبدأ مع SImple API
- نحن فقط نكتب الرمز
الحزمة الرئيسية
يستورد (
"fmt"
"net / http"
"github.com/gin-gonic/gin"
)
func main ()
{s: = gin.Default ()
s.GET (""، func (c * gin.Context) {
c.String (http.StatusOK ، "ما هو الدور الوظيفي؟")
})
s.Run (“localhost: 8000”)
}
- كما ترى ، قمنا باستيراد كل حزمة يتطلبها التطبيق. ثم ننتقل مباشرة إلى الوظيفة الرئيسية. ما نقوم به هو بناء وحدة افتراضية لاسترداد البرامج الوسيطة أو برنامج التسجيل من أجل Gin.
- يتم تضمين الإعدادات الافتراضية في المتغير "s". وسنستخدم هذا المتغير للمساعدة في تطوير GET API. الحجة الأولى التي قدمتها في هذا المثال هي عنوان URL لواجهة برمجة التطبيقات.
- سيتم استخدام عنوان URL الأساسي المحدد بواسطة w.Run (“localhost: 8000”) لاستضافة API على localhost: 8000. علاوة على ذلك ، تشير الوسيطة الأولى في الواقع إلى المسار النسبي لواجهة برمجة التطبيقات.
- تشير وظيفة المعالج func (c * gin.Context) إلى تسلسل الوظائف الذي يمكنك تقديمه.
- يعمل المؤشر إلى المتغير * gin.Context كوسيطة للدالة. لذلك ، فإن "c" في هذه الحالة تعني السياق.
- يجب أن يُرجع السياق قيمة إما c.String أو c.JSON. هنا ، هناك نوعان من المعايير في العملية. تتم الإشارة إلى الحالة بواسطة الوسيطة الأولى ، وهو عدد صحيح مباشر (http.StatusOK). يمكننا استخدام هذا لأننا قمنا باستيراد حزمة net / http.
- أنا فقط أرسل عينة من السلسلة بعد ذلك. إنه "ما هو دور الوظيفة؟"
- لنقم بتشغيل البرنامج أعلاه
لتشغيل البرنامج ، علينا كتابة go run main.go.

- كما ترى ، يوجد طلب GET على عنوان URL فارغ. كما أنه يأتي بوظيفة قابلة للتخصيص. بالإضافة إلى ذلك ، يمكن رؤية عملية وضع تحرير المحرك. توجد نقطة نهاية نشطة واحدة على المضيف المحلي 8000.
- في متصفح الويب ، قد نكتب localhost: 8000 لرؤية:
- في غضون ذلك ، سترى اللقطة التالية في VS Code

ماذا يعني هذا؟ حسنًا ، يلعب إطار عمل gin دورًا كبيرًا هنا في مراقبة وقت استجابة الكود الذي يتم تنفيذه.
- التركيز على GET API حيث يتم التعامل مع تمرير المعلمات بواسطة عنوان URL
يفترض الكود التالي أن واجهة برمجة التطبيقات (API) ستزودك بقيمة ، من الناحية المثالية سلسلة ، استجابةً لعنوان URL.
s.GET ("/: get"، func (c * gin.Context) {
var val = c.Param (“getr”)
c.JSON (http.StatusOK، gin.H {
"responseedata": val،
})
})
// القسم الثاني
- قد نقدم كل اسم متغير في طلب GET عن طريق فصلهم بنقطتين. كل شيء يتم إدخاله بعد عنوان URL الأساسي سيتم اعتباره "get".
- لتحديد قيمة "get" ، يجب علينا تحديد سياق Param واسم المتغير الذي ذكرناه. سيتلقى Val "get" من Gin ويتم إبلاغه بالنتيجة.
- بعد ذلك ، نرى أنني أقوم بنقل JSON يحتوي على القيمة.
هل تعمل على شيء معقد؟ إذًا سيكون من الأفضل الاستفادة من خدمات تطوير Golang في حال تعثرت في مشكلة ولا يمكنك إصلاحها.

- لنقم بتشغيل البرنامج أعلاه
- مرة أخرى ، سيتعين علينا تشغيل البرنامج عن طريق كتابة go run main.go.
إذا رأيت رسالة "tcp 127.0.0.1: 8000: bind: يُسمح عادةً باستخدام واحد فقط لكل عنوان مأخذ توصيل (عنوان بروتوكول / شبكة / منفذ)." ، إذن عليك تنفيذ عملية في موجه الأوامر.
nestat -ano | findstr: 8000
تحقق من قيمة LISTENING (على سبيل المثال 7932) ، ثم عليك أن تكتب
تسكيل / pid 7932 / F.
سيؤدي هذا إلى إنهاء عملية معرف المنتج.
- على المتصفح نقوم بما يلي:

السبب في أننا اضطررنا إلى إدخال سلسلة بعد ذكر المضيف المحلي: 8000 هو أن واجهة برمجة التطبيقات تتوقع سلسلة من عنوان URL.
- جرب POST API
- سنحاول الاتصال بواجهة برمجة تطبيقات POST هنا. علاوة على ذلك ، نحن ندرك أن البيانات ستكون موجودة في الجسم. هذا عندما يكون الهيكل مفيدًا.
- هل تتذكر هذا القسم؟
الحزمة الرئيسية
يستورد (
"fmt"
"net / http"
"github.com/gin-gonic/gin"
)
- بعد ذلك ، سننشئ هيكلًا يحتوي على حقلي بيانات ، كما ترى:
اكتب هيكل الوظيفة {
راتب int "json": "راتب" ملزم: "مطلوب" "
سلسلة الاسم "json:" اسم "ملزم:" مطلوب "`
}
- يمثل كل من json: "المرتب" و json: "الاسم" المفاتيح المختلفة. يمكنك أيضًا رؤية أن الربط قد تم تحديده على أنه "مطلوب".
- بعد // القسم الثاني ، سنكتب:
s.POST ("/ المميزة"، func (c * gin.Context) {
وظيفة فار البيانات
إذا أخطأ: = c.ShouldBind (& data) ؛ يخطئ! = لا شيء {
fmt.Println (يخطئ)
c.JSON (http.StatusBadRequest، gin.H {
"خطأ": fmt.Sprintf ("٪ v" ، يخطئ) ،
})
} آخر{
c.JSON (http.StatusOK، gin.H {
"البيانات": البيانات ،
})
}
})
- دعونا نلقي نظرة على كتلة التعليمات البرمجية هذه. في s.POST ، سنقوم ببناء الكائن للوظيفة. يجب بعد ذلك إرفاق السياق "ج" بنموذج البيانات بعد ذلك. إذا ألقى c.ShouldBind (& data) خطأ ، فسيتم تنبيه واجهة برمجة التطبيقات (API) بالمشكلة.
- لقد قدمت طلبًا سيئًا يوضح الخطأ الذي لوحظ في "خطأ": fmt.Sprintf ("٪ v" ، يخطئ) في c.JSON (http.StatusBadRequest).
- إذا لم تكن هناك مشاكل ، فسيتم استخدام مفتاح "البيانات" لإرسال البيانات مرة أخرى إلى استجابة واجهة برمجة التطبيقات.
- لنقم بتشغيل الكتلة النهائية من التعليمات البرمجية
- دعنا الآن نفحص المرحلة النهائية للبرنامج. يجب أن نكتب go run main.go للقيام بذلك. بالإضافة إلى ذلك ، سأستخدم Postman لإظهار كيفية عمل API وكيف يعمل الكود. إصدار سطح المكتب يحتاج فقط إلى التثبيت.
- يمكنك أن ترى أن لدي حقلي بيانات في الجسم إذا نظرت إلى لقطة الشاشة أدناه. يجب أن يكون Raw و JSON اختيارات للجسم.

- عندما نضغط على "إرسال" ، سنشاهد النتيجة التالية:
{
"بيانات": {
"الراتب": 23000 ،
"الاسم": "روبرت هول"
}
}
هل استطعت فهم البرنامج؟ نعم؟ ثم عظيم. في الحالة الأخيرة ، وصلنا إلى ثلاث واجهات برمجة تطبيقات قيد التشغيل ، واحدة بدون أي شيء مذكور في عنوان URL ، تلك التي تتوقع سلسلة ثم الأخيرة التي تتوقع قيمًا في الجسم. نأمل أن تتمكن من معالجة بعض مهام REST API الصعبة الآن.