জিন হল একটি HTTP ওয়েব ফ্রেমওয়ার্ক যা Go (গোলাং) এ লেখা। এটিতে মার্টিনির মতো এপিআই বৈশিষ্ট্য রয়েছে, তবে মার্টিনির চেয়ে 40 গুণ দ্রুত কর্মক্ষমতা সহ। আপনার যদি ভাল পারফরম্যান্সের প্রয়োজন হয় তবে জিন আপনার জন্য ।
মডিউল ইনিশিয়ালাইজেশন
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
প্যারামিটার নেই
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) {
// এখানে কোড লিখুন
}
}