Gin Web Framework part 1

Gin Web Framework part 1
Gin Web Framework part 1

توی این دوره یا مجموعه مقالاتی که قرار منتشر کنم. میخوام در مورد Gin Web Framework صحبت کنم. در واقع می خوام از صفر تا صد این فرم ورک رو بهتون اموزش بدم.

فرم ورک Gin چیست؟

این فرم ورک با زبان گو نوشته شده است?. و از API های فرم ورک martini و با عملکرد بسیار بهتر و به لطف httprouter تا 40 برابر سریعتر بهره می برد. اگر به عملکرد و بهره وری خوب نیاز دارید.??

جین را دوست❤️ خواهید داشت.(البته ابن جمله از خودم نبود? از سایت اصلی بود)

ویژگی ها این فرم ورک:

  • Fast

مسیریابی مبتنی بر درخت Radix ، استفاده memory foot print

  • Middleware support

درخواست HTTP ورودی را می توان با زنجیره ای از میان افزارها و اقدامات نهایی انجام داد. به عنوان مثال: Logger ، Authorization ، GZIP و در آخر پیام را در DB ارسال کند.

  • Crash-free

ابن فرم ورک می تواند اگر در هنگام درخواست HTTP دچار مشکل شود می تواند آن را بازیابی کند. به این ترتیب سرور شما همیشه در دسترس خواهد بود. به عنوان مثال - همچنین می توانید این خرابی را به Sentry گزارش دهد!

  • JSON validation

ابن فرم ورک می تواند JSON یک درخواست را تجزیه و تأیید کند - به عنوان مثال ، بررسی مقادیر مورد نیاز

  • Routes grouping

مسیرهای گروه ها می توانند بدون محدودیت عملکرد به صورت نامحدود تو در تو قرار بگیرند.

  • Error management

ابن فرم ورک یک روش مناسب برای جمع آوری تمام خطاهایی که در هنگام درخواست HTTP رخ داده است فراهم می کند. در نهایت ، یک میان افزار می تواند آنها را در یک پرونده ورود به سیستم ، یک پایگاه داده بنویسد و آنها را از طریق شبکه ارسال کند.

  • Rendering built-in

ابن فرم ورک استفاده آسان از API را برای ارائه JSON ، XML و HTML فراهم می کند.

  • Extendable

ایجاد یک میان افزار جدید بسیار آسان است

لیستی از بنچمارک ها

  one Benchmarks
one Benchmarks
 two Benchmarks
two Benchmarks

توضیحات جدول

(1): کل تکرارها در زمان ثابت به دست می آیند ، بالاتر یعنی نتیجه با اطمینان تر

(2): مدت زمان تکرار (ns / op) ، پایین تر بهتر است

(3): این Heap Memory، پایین تر بهتر است

(4): میانگین تخصیص در هر بار تکرار (allocs / op) ، پایین تر بهتر است.

نیاز مندی این فرم ورک

Go 1.9 or above
Go 1.7 or Go 1.8 will be no longer supported soon.

نصب و شروع اولین کد با این فرم ورک

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

go get -u github.com/gin-gonic/gin

خوب یه فایل ایجاد کنید به اسم example.go و کد زیر رو بنویسید.

package main
 import &quotgithub.com/gin-gonic/gin&quot 
func main() { 
r := gin.Default() 
r.GET(&quot/ping&quot, func(c *gin.Context) { 
c.JSON(200, gin.H{ &quotmessage&quot: &quotpong&quot,}) 
}) 
r.Run() 
 }


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

توی خط پنجم اومدیم یه درخواستی از نوع get ایجاد کردیم به آدرس ping که در خروجی قرار یه رشته pong رو برامون چاپ کنه

خوب حالا دستور زیر رو میزنم

# run example.go and visit 0.0.0.0:8080/ping on browser
$ go run example.go

اینم خروجی که ادرس 127.0.0.1/ping که خروجی رشته pong رو چاپ می کند

چجوری تست بنویسم براش؟

برای تست نویس باید از پکیج net/http/httptest استفاده کنید به صورت زیر

package main

import (
	&quotnet/http&quot
	&quotnet/http/httptest&quot
	&quottesting&quot

	&quotgithub.com/stretchr/testify/assert&quot
)

func TestPingRoute(t *testing.T) {
	router := setupRouter()

	w := httptest.NewRecorder()
	req, _ := http.NewRequest(&quotGET&quot, &quot/ping&quot, nil)
	router.ServeHTTP(w, req)

	assert.Equal(t, 200, w.Code)
	assert.Equal(t, &quotpong&quot, w.Body.String())
}