0Pricing
Go Academy · บทเรียน

เราเตอร์ Gin และกลุ่มเส้นทาง

ตั้งค่าเอนจิน กลุ่ม และพารามิเตอร์เส้นทาง

เราเตอร์ Gin และกลุ่มเส้นทาง เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

Gin คืออะไร

Gin คือเว็บเฟรมเวิร์ก HTTP ประสิทธิภาพสูงสำหรับ Go ใช้เราเตอร์แบบต้นไม้เรดิกซ์ รองรับมิดเดิลแวร์ การผูกข้อมูล JSON และการตรวจสอบความถูกต้อง จึงได้รับความนิยมสำหรับ REST API

การติดตั้งและการตั้งค่าพื้นฐาน

นำเข้าแพ็กเกจและสร้างเอนจิน Gin:

go get github.com/gin-gonic/gin

package main

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{"message": "pong"})
    })
    r.Run(":8080")
}

gin.Default เทียบกับ gin.New

gin.Default() มีมิดเดิลแวร์ Logger และ Recovery มาให้ ส่วน gin.New() จะสร้างเอนจินโดยไม่มีมิดเดิลแวร์ เหมาะเมื่อจำเป็นต้องควบคุมมิดเดิลแวร์ทั้งหมดด้วยตนเอง

เมธอดของเส้นทาง

ลงทะเบียนเส้นทางสำหรับเมธอด HTTP ได้แก่ GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD และทุกเมธอด:

r.GET("/users", listUsers)
r.POST("/users", createUser)
r.PUT("/users/:id", updateUser)
r.DELETE("/users/:id", deleteUser)

พารามิเตอร์เส้นทาง

ดึงค่าพารามิเตอร์เส้นทางด้วย c.Param("name"):

r.GET("/users/:id", func(c *gin.Context) {
    id := c.Param("id")
    c.JSON(200, gin.H{"id": id})
})

พารามิเตอร์คำค้น

อ่านพารามิเตอร์คำค้นด้วย c.Query และ c.DefaultQuery:

page := c.DefaultQuery("page", "1")
limit := c.Query("limit") // "" if absent

กลุ่มเส้นทาง

จัดกลุ่มเส้นทางที่เกี่ยวข้องไว้ใต้คำนำหน้าร่วมด้วย r.Group มิดเดิลแวร์ที่ใช้กับกลุ่มจะมีผลกับเส้นทางทั้งหมดในกลุ่มนั้น:

api := r.Group("/api/v1")
{
    api.GET("/users", listUsers)
    api.POST("/users", createUser)
    api.PUT("/users/:id", updateUser)
}

กลุ่มซ้อนกัน

สามารถซ้อนกลุ่มเพื่อจัดระเบียบอย่างละเอียดได้:

admin := r.Group("/admin")
admin.Use(AdminAuth())
{
    admin.GET("/stats", getStats)
    admin.DELETE("/users/:id", deleteUser)
}

ไม่พบเส้นทาง / ไม่อนุญาตเมธอด

จัดการกรณี 404 และ 405 อย่างเหมาะสมด้วย r.NoRoute และ r.NoMethod:

r.NoRoute(func(c *gin.Context) {
    c.JSON(404, gin.H{"error": "not found"})
})

ไฟล์สแตติก

ให้บริการไฟล์สแตติกจากไดเรกทอรี:

r.Static("/static", "./public")
r.StaticFile("/favicon.ico", "./favicon.ico")

Engine ในฐานะ http.Handler

*gin.Engine ของ Gin ใช้งานตามอินเทอร์เฟซ http.Handler ได้ จึงสามารถใช้ร่วมกับ http.Server ที่กำหนดเองเพื่อกำหนดระยะหมดเวลาได้:

srv := &http.Server{Addr: ":8080", Handler: r, ReadTimeout: 5*time.Second}
srv.ListenAndServe()

ตรวจสอบอย่างรวดเร็ว

ข้อดีของการใช้กลุ่มเส้นทางใน Gin คืออะไร

ทบทวน: เราเตอร์และกลุ่มของ Gin

ประเด็นสำคัญ:

  • gin.Default() มี Logger และ Recovery ส่วน gin.New() ใช้สำหรับการตั้งค่าแบบกำหนดเอง
  • ใช้ c.Param สำหรับพารามิเตอร์เส้นทาง และ c.Query สำหรับพารามิเตอร์คำค้น
  • ใช้ r.Group("/prefix") สำหรับคำนำหน้าร่วมและมิดเดิลแวร์
  • Gin ใช้งานตามอินเทอร์เฟซ http.Handler ได้ จึงใช้ร่วมกับ http.Server ที่กำหนดเองได้

คำถามที่พบบ่อย

บทเรียน “เราเตอร์ Gin และกลุ่มเส้นทาง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เราเตอร์ Gin และกลุ่มเส้นทาง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เราเตอร์ Gin และกลุ่มเส้นทาง”

ตั้งค่าเอนจิน กลุ่ม และพารามิเตอร์เส้นทาง คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “เราเตอร์ Gin และกลุ่มเส้นทาง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม

ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เราเตอร์ Gin และกลุ่มเส้นทาง
  2. การผูกคำขอและการตรวจสอบ
  3. ตัวช่วยการตอบกลับและรหัสสถานะ
  4. มิดเดิลแวร์ Gin: การยืนยันตัวตนและการบันทึก
← กลับไปที่ Go Academy