mrbardia72
mrbardia72
خواندن ۳ دقیقه·۴ سال پیش

Gin Web Framework part 2

Gin Web Framework part 2
Gin Web Framework part 2

درود دوستان امروز میخوام در مورد بخش دوم از سری مقالات فرم ورک Gin صحبت کنیم

توی مقاله قبل یه چی یادم رفته بود اونم این بود که چه پروژه های دارن از این فرم ورک استفاده می کنند

  • gorush: A push notification server written in Go.
  • fnproject: The container native, cloud agnostic serverless platform.
  • photoprism: Personal photo management powered by Go and Google TensorFlow.
  • krakend: Ultra performant API Gateway with middlewares.
  • picfit: An image resizing server written in Go.
  • gotify: A simple server for sending and receiving messages in real-time per web socket.
  • cds: Enterprise-Grade Continuous Delivery & DevOps Automation Open Source Platform.

فهرست بخش دوم از این مقاله

  • Using GET, POST, PUT, PATCH, DELETE and OPTIONS
  • Parameters in path
  • Querystring parameters

میریم واسه توضیح هر بخش

قسمت اول Using GET, POST, PUT, PATCH, DELETE and OPTIONS

نحوه تعریف نوع درخواست ها مون رو مشخص می کنیم به صورت زیر

func main() { router := gin.Default() router.GET(&quot/someGet&quot, getting) router.POST(&quot/somePost&quot, posting) router.PUT(&quot/somePut&quot, putting) router.DELETE(&quot/someDelete&quot, deleting) router.PATCH(&quot/somePatch&quot, patching) router.HEAD(&quot/someHead&quot, head) router.OPTIONS(&quot/someOptions&quot, options) router.Run()

توی خط اول برای شروع کار حتما باید یه نمونه از این فرم ورک رو نمونه برداری کنیم ابن خط درواقع میدلویر پیش فرض این فرم ورک رو برام ست می کنه که کار این میدلویر logger and recovery می باشد

توی خط ۳ تا ۹ نوع درخواست مون رو مشخص می کنیم که GET, POST, PUT, PATCH, DELETE می باشد

فک نکونم دیگه نیاز به توضیح بیشتری باشه چون همه چی واضح هست

خوب خط ۱۰ برنامه ما رو رروی پورت پیش فرض ۸۰۸۰ تنظیم می کند اگر نیاز به تغییر این پورت دارید به صورت زیر می توایند تغییر دهید

router.Run(":4030")

قسمت دوم Parameters in path

نحوه پاس دادن پارمتر از طریق آدرس یا url به صورت زیر انجام می شود.

روش اول: در این روش که روش ساده ای هم هست روش ارسال یه پارامتر به آدرس هست

router.GET(&quot/user/:name&quot, func(c *gin.Context) { name := c.Param(&quotname&quot) c.String(http.StatusOK, &quotHello %s&quot, name) })

در روش فوق ما با ارسال یه رشته به آدرس بالا (user/:name/)که جایگزین اون name ما هست میشینه که به صورت زیر می باشد - عنوان مثال

/user/:name
/user/bardia
/uaer/gopher

روش دوم: مفهوم این کد ریدایرکت هست که زیر این کد توضیح میدم

router.GET(&quot/user/:name/*action&quot, func(c *gin.Context) { name := c.Param(&quotname&quot) action := c.Param(&quotaction&quot) message := name + &quot is &quot + action c.String( message) })

خوب توی کد فوق اگر ما بخواهیم که آدرس مدنظر ما با الگوی که بالا توی خط اول تعریف کردیم نبود به آدرس دیگری ریدایرکت بشه

مثلن یعنی یه کاربری توی پنل خودش هست و فقط به آدرس های زیر از پنل خودش می تونه بره

/user/bardia/post
/user/bardia/category
/user/bardia/task
/user/bardia/comment

حل فرض کنید قرار به آدرس زیر بره

/user/bardia/install

چون چنین آدرس موجود نیست اصلن توی سیستم ریدایرکت میشه به آدرس user/bardia

روش سوم: چک کردن آدرس ورودی

router.POST(&quot/user/:name/*action&quot, func(c *gin.Context) { c.FullPath() ==&quot/user/:name/*action&quot // true })

در روش فوق زمانی که ما بخواهیم آدرس ورودی رو چک کنیم ببینیم همون آدرس مورد انتظار هست از تابع fullpath در بدنه تابع درخواست کننده استفاده می کنیم.

قسمت سوم Querystring parameters

درواقع Query String هر مقداریست که بعد از علامت سوال (“?”) در انتهای URL قرار می‌گیرد که می‌تواند یک یا تعداد بیشتری پارامتر باشد. ‏مثلا app.gopher.academy/?q=app یک URL همراه با Query String می‌باشد که مقدار q هم همراه با URL به سرور داده می‌شود که در اینجا برابر با app است

ساختار Query String

https://derak.cloud/
https://derak.cloud/

کد مربوطه در این فرم ورک

router.GET(&quot/welcome&quot, func(c *gin.Context) { firstname := c.DefaultQuery(&quotfirstname&quot, &quotgopher&quot) lastname := c.Query(&quotlastname&quot) c.String(http.StatusOK, &quotHello %s %s&quot, firstname, lastname) })

قرار یه آدرس به صورت زیر داشته باشیم

welcome?firstname=Jane&lastname=Doe

خوب برای اینکه آدرس ما به صورت یک querystring باشه از متد به اسم c.Query که توی خط ۳ نوشتم انجام میشه

اما خط دوم یه متدی داره به اسم defaultquery که زمانی استفاده میشه که ما بخوایم بگیم یه پارمتری رو اختیاری کنیم یعنی اگع کاربر چیزی نفرستاد یا خالی بود به صورت پیش فرض عبارت gopher رو بفرست


گولنگgogolangframework
Go Developer(gopher-academy.ir)
شاید از این پست‌ها خوشتان بیاید