Go Academy · บทเรียน

ตัวช่วยการตอบกลับและรหัสสถานะ

c.JSON, c.AbortWithError และการตอบกลับข้อผิดพลาด

บทเรียน 3 จาก 413 ขั้นตอน

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

c.JSON

c.JSON(statusCode, obj) แปลง obj เป็น JSON และกำหนด Content-Type เป็น application/json เป็นเมธอดการตอบกลับที่ใช้บ่อยที่สุด

c.JSON(http.StatusOK, gin.H{
    "id":   user.ID,
    "name": user.Name,
})

gin.H

gin.H เป็นรูปแบบย่อของ map[string]any ใช้สร้างออบเจ็กต์ JSON แบบเฉพาะกิจโดยไม่ต้องกำหนดโครงสร้าง

c.JSON(200, gin.H{"message": "created", "id": id})

ค่าคงที่รหัสสถานะ HTTP

ใช้ค่าคงที่ http.Status* แทนตัวเลขโดยตรงเพื่อให้โค้ดเข้าใจได้ชัดเจนยิ่งขึ้น:

c.JSON(http.StatusCreated, gin.H{"id": id})
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid input"})
c.JSON(http.StatusInternalServerError, gin.H{"error": "internal error"})

c.String และ c.Data

ส่งข้อความธรรมดาด้วย c.String หรือส่งไบต์ใด ๆ ด้วย c.Data:

c.String(200, "Hello, %s!", name)
c.Data(200, "application/octet-stream", fileBytes)

c.File และ c.FileAttachment

ให้บริการไฟล์จากดิสก์ โดยแสดงในหน้าเว็บหรือส่งเป็นไฟล์ดาวน์โหลด:

c.File("./public/report.pdf")           // inline
c.FileAttachment("./report.pdf", "report.pdf") // download

c.Redirect

ส่งการเปลี่ยนเส้นทาง HTTP (301 ถาวร, 302 ชั่วคราว):

c.Redirect(http.StatusMovedPermanently, "/new-url")

c.AbortWithStatus

หยุดการประมวลผลสายคำขอและเขียนการตอบกลับว่างพร้อมรหัสสถานะที่กำหนด ต่างจาก c.JSON ตรงที่เรียก Abort เพื่อป้องกันไม่ให้ตัวจัดการถัดไปทำงาน

c.AbortWithStatus(http.StatusUnauthorized)

c.Error

แนบข้อผิดพลาดไว้กับบริบทโดยไม่เขียนการตอบกลับ มิดเดิลแวร์สามารถรวบรวมข้อผิดพลาดเหล่านี้แล้วเขียนการตอบกลับข้อผิดพลาดแบบรวมเมื่อสิ้นสุดการทำงาน

c.Error(fmt.Errorf("database error: %w", err))

ส่วนหัวการตอบกลับ

กำหนดส่วนหัวการตอบกลับแบบกำหนดเองก่อนเรียก c.JSON หรือ c.Data:

c.Header("X-Request-ID", requestID)
c.Header("Cache-Control", "max-age=3600")

การสร้างการตอบกลับ XML

Gin ยังรองรับการตอบกลับในรูปแบบ XML และ YAML ด้วย:

c.XML(200, user) // requires xml struct tags
c.YAML(200, user)

โครงสร้างการตอบกลับแบบกำหนดเอง

กำหนดตัวห่อการตอบกลับ API มาตรฐาน เพื่อให้รูปแบบสอดคล้องกันในทุกปลายทาง:

type APIResponse struct {
    Success bool   `json:"success"`
    Data    any    `json:"data,omitempty"`
    Error   string `json:"error,omitempty"`
}

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

c.AbortWithStatus ทำสิ่งใดแตกต่างจาก c.Status

ทบทวน: ตัวช่วยการตอบกลับ

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

  • c.JSON(statusCode, obj) เป็นเมธอดหลักสำหรับการตอบกลับ JSON
  • ใช้ค่าคงที่ http.Status* เพื่อให้โค้ดเข้าใจได้ชัดเจน
  • c.AbortWithStatus หยุดสายตัวจัดการ
  • กำหนดตัวห่อ APIResponse ที่มีรูปแบบสอดคล้องกันสำหรับทุกปลายทาง
เริ่มต้นได้ฟรี

เรียนรู้ Go ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
51
บทเรียน
203

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

บทเรียน “ตัวช่วยการตอบกลับและรหัสสถานะ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ตัวช่วยการตอบกลับและรหัสสถานะ”

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

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

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

บทเรียน “ตัวช่วยการตอบกลับและรหัสสถานะ” ใช้เวลานานแค่ไหน

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

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

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

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

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