ডেভসংকেত

জিন-গনিক

জিন হল একটি HTTP ওয়েব ফ্রেমওয়ার্ক যা Go (গোলাং) এ লেখা। এটিতে মার্টিনির মতো এপিআই বৈশিষ্ট্য রয়েছে, তবে মার্টিনির চেয়ে 40 গুণ দ্রুত কর্মক্ষমতা সহ। আপনার যদি ভাল পারফরম্যান্সের প্রয়োজন হয় তবে জিন আপনার জন্য ।

কন্ট্রিবিউটর

  • raihaninfo
  • sabbirshawon

শেয়ার করুন

ইনিশিয়ালাইজেশন

  • মডিউল ইনিশিয়ালাইজেশন

    go mod init github.com/<username>/<projectname>
  • জিন ইনস্টল

    go get -u github.com/gin-gonic/gin
  • ফাইল তৈরি করা

    touch main.go
  • জিন ইম্পোর্ট করা

    import "github.com/gin-gonic/gin"

সার্ভার রান করা

  • 8080 পোর্টে সার্ভার রান করা

    router.Run()
  • যেকোন পোর্টে সার্ভার রান করা

    router.Run(":3000") // 3000 পোর্টে সার্ভার রান করা
  • কাস্টম HTTP কনফিগারেশন

    s := &http.Server{
    	Addr: ":8080",
    	Handler: router,
    	ReadTimeout: 10 * time.Second,
    	WriteTimeout: 10 * time.Second,
    	MaxHeaderBytes: 1 << 20,
    }
    s.ListenAndServe()

জিন রাউটার এর মেথড

  • GET

    router.GET("/", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })
  • POST

    router.POST("/", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })
  • PUT

    router.PUT("/", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })
  • DELETE

    router.DELETE("/", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })
  • PATCH

    router.PATCH("/", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })
  • HEAD

    router.HEAD("/", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })
  • OPTIONS

    router.OPTIONS("/", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })
  • Any

    router.Any("/", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })

ফাইল রেন্ডার করা

  • এইচটিএমএল ফাইল রেন্ডার করা

    router.GET("/", func(c *gin.Context) {
    	c.HTML(http.StatusOK, "index.html", gin.H{})
    })
  • যেকোন ফাইল রেন্ডার করা

    router.GET("/", func(c *gin.Context) {
    	c.File("index.html")
    })
  • static ফোল্ডার থেকে ফাইল রেন্ডার করা

    router.Static("/asset", "./asset")

জিন রাউটার এর মিডলওয়্যার

  • লগার মিডলওয়্যার

    router.Use(gin.Logger())
  • স্ট্যাটিক ফাইল সার্ভ করার মিডলওয়্যার

    router.Use(gin.Static("/assets", "./assets"))
  • রিকভারি মিডলওয়্যার

    router.Use(gin.Recovery())
  • মিডলওয়্যার যোগ করা এবং প্যারামিটার নেওয়া

    router.Use(gin.RecoveryWithWriter(io.Writer))
  • কাস্টম মিডলওয়্যার

    router.Use(func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })

জিন রাউটার এর গ্রুপ

  • গ্রুপ যোগ করা

    router.Group("/users")
  • গ্রুপ এর মিডলওয়্যার যোগ করা

    users:= router.Group("/users", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })
  • গ্রুপ এর রাউটার যোগ করা

    users.GET("/", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })

জিন রাউটার এর কন্টেক্সট

  • কন্টেক্সট থেকে প্যারামিটার নেওয়া

    c.Param("id")
  • জেসন তৈরি করা

    c.BindJSON(&user)
  • জেসন রিটার্ন করা

    c.JSON(http.StatusOK, gin.H{
    	"message": "ok"
    })
  • ফর্মাটেটেড জেসন (Formatted json)

    c.IndentedJSON(http.StatusOK, obj any)
  • xml রিটার্ন করা

    c.XML(http.StatusOK, gin.H{
    	"message": "ok"
    })
  • yaml রিটার্ন করা

    c.YAML(http.StatusOK, gin.H{
    	"message": "ok"
    })
  • স্ট্রিং রিটার্ন করা

    c.String(http.StatusOK, "string")
  • এইচটিএমএল রিটার্ন করা

    c.HTML(http.StatusOK, "index.tmpl", gin.H{
    	"title": "Main website"
    })
  • redirect করা

    c.Redirect(http.StatusMovedPermanently, "http://google.com")
  • Request এর মেথড

    c.Request
  • ফর্ম এর মান নেওয়া

    c.Request.FormValue("id")
  • content-type নেওয়া

    c.ContentType()
  • রিকুয়েস্ট এর হেডার নেওয়া

    c.Request.Header
  • রিকুয়েস্ট এর বডি নেওয়া

    c.Request.Body
  • রিকুয়েস্ট এর মেথড নেওয়া

    c.Request.Method
  • রিকুয়েস্ট এর URL নেওয়া

    c.Request.URL
  • রিকুয়েস্ট এর প্যাথ নেওয়া

    c.Request.URL.Path
  • রিকুয়েস্ট এর কোয়েরি স্ট্রিং নেওয়া

    c.Request.URL.RawQuery
  • রিকুয়েস্ট এর host নেওয়া

    c.Request.URL.Host

মেইন ফাংশন

  • মেইন ফাংশন

    func main() {
    	// এখানে কোড লিখুন
    }

জিন রাউটার

  • জিন রাউটার ইনিশিয়ালাইজেশন

    router := gin.Default()

জিন রাউটার এর প্যারামিটার

  • প্যারামিটার নেই

    router.GET("/", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })
  • প্যারামিটার আছে

    router.GET("/:id", func(c *gin.Context) {
    	// এখানে কোড লিখুন
    })

ফাইল উপলোড

  • একটি ফাইল আপলোড করা

    router.POST("/upload", func(c *gin.Context) {
    	file, _ := c.FormFile("file")
    	c.SaveUploadedFile(file, file.Filename)
    })
  • একাধিক ফাইল আপলোড করা

    router.POST("/upload", func(c *gin.Context) {
    	form, _ := c.MultipartForm()
    	files := form.File["files"]
    	for _, file := range files {
    		c.SaveUploadedFile(file, file.Filename)
    	}
    })

কাস্টম মিডলওয়্যার তৈরি করা

  • কাস্টম মিডলওয়্যার তৈরি করা

    func MyCustomMiddleware() gin.HandlerFunc {
    	return func(c *gin.Context) {
    		// এখানে কোড লিখুন
    	}
    }

কুকি এর ব্যবহার

  • কুকি সেট করা

    c.SetCookie("cookie_name", "cookie_value", 3600, "/", "example.com", false, true)
  • কুকি পাওয়া

    cookie, err := c.Cookie("cookie_name")
  • কুকি ডিলিট করা

    c.SetCookie("cookie_name", "", -1, "/", "example.com", false, true)

ডেভসংকেত সম্পর্কে

ডেভসংকেত এর লক্ষ্য হচ্ছে বাংলাতে একটা বড় চিটশিটের ভান্ডার গড়ে তোলা। এটা সম্পূর্ণ স্বাধীন এবং ওপেন সোর্স গিটহাব অর্গানাইজেশন।

স্পন্সর