آیا می خواهید از Golang برای برنامه وب بعدی خود استفاده کنید؟ برای کمک به این کار، به این مجموعه از چارچوب های درجه یک نگاه نکنید.
توسعه وب یکی از زمینه هایی است که می توانید در آن از Go استفاده کنید. بسیاری از شرکتها و پروژهها از Go در پشتیبان برنامههای وب خود استفاده میکنند، عمدتاً به دلیل سرعت، سهولت استفاده و اکوسیستم بسته.
بسته net/http بیشتر قابلیت هایی را دارد که برای ساخت برنامه های وب در Go به آن نیاز دارید. می توانید از بسته های دیگر از کتابخانه استاندارد غنی از ویژگی ها استفاده کنید. بسته کدگذاری تبدیل داده های سطح پایین را مدیریت می کند و بسته html به شما امکان می دهد با صفحات وب تعامل داشته باشید.
فراتر از این، اکوسیستم بسته های شخص ثالث Go ویژگی های اضافی را برای کمک به توسعه وب فراهم می کند.
1. چارچوب جین
جین یکی از محبوب ترین بسته های توسعه وب Go است. جین یک میکرو فریمورک بسیار کارآمد برای ساخت برنامه های کاربردی وب و میکروسرویس ها در Go است.
جین سریع است و قابلیت های رندر داخلی، میان افزار و اعتبارسنجی JSON را ارائه می دهد. دارای مدیریت خطا و قابلیت توسعه آسان است. می توانید برنامه های Gin خود را با مشخصات OpenAPI3 و swagger مستند کنید.
جین دارای یک API شبیه مارتینی است و ادعا می کند که پروژه چهل برابر سریعتر است. برای میکروسرویسها، میتوانید از اجزای مدولار Gin برای توسعه خطوط لوله رسیدگی به درخواست استفاده مجدد کنید.
با این دستور می توانید فریمورک Gin را نصب کنید:
go get github.com/gin-gonic/gin
در اینجا نحوه تنظیم یک پایان درخواست ساده با فریم ورک Gin آورده شده است.
import (
"github.com/gin-gonic/gin"
"log"
"net/http"
)
func main() {
router := gin.Default()
router.GET("/hello", func(context *gin.Context) {
context.JSON(http.StatusOK, gin.H{"success": "Successfully hit the endpoint"})
})
log.Fatalln(http.ListenAndServe(":8080", nil))
}
می توانید یک نمونه روتر را با متد Default بسته جین ایجاد کنید. متد GET برای درخواستهای GET در مسیر (نقطه پایانی) و یک اعلان تابع کنترل کننده قرار میگیرد. این تابع مثال یک کد وضعیت HTTP 200 را به مشتری و یک پاسخ JSON موفق در بدنه پاسخ باز می گرداند.
2. چارچوب فیبر
فیبر یک فریم ورک شبیه به ExpressJS با حافظه ایمن است که بر روی بسته سریع http فوق العاده سریع ساخته شده است. عملکرد عالی ارائه می دهد و مبتدیان و توسعه دهندگان باتجربه جاوا اسکریپت را هدف قرار می دهد.
فیبر بیشتر قابلیت هایی را که در یک فریم ورک Backend به آن نیاز دارید، دارد. مسیریابی، گروهبندی درخواست، اعتبارسنجی، قالببندی، قلابها، مدیریت خطا و بسیاری موارد دیگر را مدیریت میکند. فیبر قابل گسترش است و میتوانید با استفاده از رمزگذار و رمزگشای سفارشی فیبر را سریعتر بسازید.
آخرین نسخه (v2) فریمورک Fiber را با این دستور نصب کنید:
go get github.com/gofiber/fiber/v2
در اینجا نحوه تنظیم یک نقطه پایانی درخواست ساده GET با چارچوب فیبر آورده شده است.
import "github.com/gofiber/fiber/v2"
func main() {
app := fiber.New()
app.Get("/hello", func(ctx *fiber.Ctx) error {
return ctx.SendString("Hello")
})
log.Fatal(app.Listen(":8080"))
}
روش New یک نمونه جدید از یک برنامه Fiber را برمی گرداند. روش Get برای تنظیم درخواست های GET است. در این حالت، نقطه پایانی /hello رشته Hello را برمیگرداند.
شما برنامه را طوری تنظیم می کنید که در پورت لوکال هاست 8080 با روش Listen برنامه گوش کند.
3. چارچوب عنبیه
Iris یک چارچوب وب چند پلتفرمی، کارآمد، تمام عیار و به خوبی طراحی شده است. میتوانید از آن برای ساخت APIها و برنامههای وب با کارایی بالا و قابل حمل در Go استفاده کنید. مانند فیبر، Iris is ExpressJS الهام بخش برخی از الگوهای طراحی در Iris است.
می توانید برنامه های بدون سرور را به سرعت با Iris بسازید و آنها را در AWS، Netlify و بسیاری از سرویس های دیگر مستقر کنید. بسته Iris دارای یک برنامه CLI است که می توانید از آن برای بارگیری مجدد قالب های Iris و نظارت بر برنامه خود استفاده کنید.
بسته Iris دارای ویژگی هایی است که توسعه را بسیار آسان می کند. Iris یک API شبیه به سیناترا دارد که برای ورود به سیستم، مسیریابی، جلسات و سوکتهای وب ارائه میشود. همچنین از عملکردهای GRPC، سرویس دهی فایل، احراز هویت، مجوز و آزمایش پشتیبانی می کند.
این دستور را در ترمینال فضای کاری خود اجرا کنید تا چارچوب Iris را روی ماژول های Go خود نصب کنید.
go get github.com/kataras/iris/v12@lastest
در اینجا نحوه تنظیم یک درخواست GET با فریم ورک Iris برای اجرا در پورت localhost 8080 آمده است.
import "github.com/kataras/iris/v12"
func main() {
app := iris.New() // new Iris instance
app.Handle("GET", "/hello", func(ctx iris.Context) {
_, err := ctx.JSON(iris.Map{"message": "hello"})
if err != nil {
return
}
})
err := app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed))
if err != nil {
return
}
}
متغیر برنامه نمونه ای از یک برنامه جدید Iris است. کنترل کننده GET یک پیام JSON برای درخواست در مسیر /hello برمی گرداند.
4. چارچوب Beego
Beego یک چارچوب Go با کاربری آسان، هوشمند و بسیار کارآمد برای ساخت برنامه های وب است. Beego ساخت برنامه های مدولار را ساده می کند. همراه با یک ORM داخلی (نقشهنگار رابطه شی) و روتر، در کنار قابلیت قالببندی.
Beego قابلیت های خاص Go را با رابط ها و تعبیه ساختار یکپارچه می کند. دارای ساختار API عالی است که برای سرعت با پشتیبانی جلسه و استقرار و داخلی سازی بهینه شده است.
Beego گسترده است و بسیاری از شرکت ها، از Opera گرفته تا Huawei، Tencent و Weico، از Beego در تولید استفاده می کنند.
می توانید از این دستور برای نصب Beego Framework در پروژه خود استفاده کنید.
go get -u github.com/beego/beego/v2
در اینجا نحوه تنظیم یک نقطه پایانی API درخواست ساده GET با چارچوب Beego آمده است.
import "github.com/beego/beego/v2/server/web"
type ControllerInstance struct {
web.Controller // entry point for the beego app
}
func (controller *ControllerInstance) Get() {
controller.Ctx.WriteString("hello world")
}
func main() {
web.Router("/hello", &ControllerInstance{}) // mounting with beego
web.Run() // running beego app
}
ساختار ControllerInstance نقطه ورود برنامه Beego است. تابع Get handler حاوی منطق درخواست GET به نقطه پایانی /hello است. رشته “سلام جهان” را به عنوان پاسخ برمی گرداند.
5. چارچوب Revel
Revel به دلیل انعطافپذیری که برای ساخت برنامههای وب فراهم میکند میدرخشد. می توانید از مسیریابی ایمن نوع Revel استفاده کنید، کنترلرها را بسازید و از الگوهای Go با Revel استفاده کنید.
Revel عملکردی را برای مسیریابی، رمزگذاری و رمزگشایی آسان JSON و مدیریت جلسه ارائه می دهد. همچنین شامل توابعی برای مدیریت کش کردن، اشکال زدایی و آزمایش برنامه های وب می باشد. Revel یک بسته CLI برای ساختن CLI برای برنامه های شما دارد. میتوانید فایلهای استاتیک را با Revel سرو کنید و برنامههای چت را با قابلیت Websocket آن بسازید.
چارچوب Revel را با این دستور در فهرست پروژه خود نصب کنید:
go get github.com/revel/revel
راه اندازی یک برنامه Revel آسان است. در اینجا یک تابع کنترل کننده ساده برای یک نقطه پایانی درخواست GET با چارچوب Revel آورده شده است.
import (
"github.com/revel/revel"
)
type Model struct { // simple model struct
Message string `json:"message"`
Description string `json:"description"`
}
type App struct {
*revel.Controller // entry point for the requests
}
func (app App) Hello() revel.Result {
model := Model{
Message: "success",
Description: "Hello!, World",
}
app.Response.ContentType = "application/json"
return app.RenderJSON(model)
}
ساختار App نقطه ورود برنامه Revel است. کنترل کننده های شما ساختار برنامه را پیاده سازی خواهند کرد. نوع محتوای پاسخ JSON است و تابع Hello handler یک ساختار JSON کدگذاری شده را برمی گرداند.
مراقب تفاوت بین روترها و فریم ورک ها باشید
بسته های وب زیادی را در اکوسیستم Go خواهید دید که بیشتر آنها روتر یا فریم ورک هستند. روترها برای دریافت درخواست ها از طریق پروتکل HTTP هستند.
برای کار با روترها به بسته های اضافی نیاز دارید. مانند موارد موجود در این آموزش، اکثر فریم ورک ها شامل روترهای داخلی در کنار سایر عملکردها هستند.