การตั้งเวลาหมดอายุและส่วนหัว
การหมดเวลาของไคลเอนต์ ส่วนหัวแบบกำหนดเอง และโทเค็นยืนยันตัวตน
การตั้งเวลาหมดอายุและส่วนหัว เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
เวลาหมดระดับไคลเอ็นต์
กำหนด http.Client.Timeout เพื่อจำกัดเวลารวมของคำขอและการตอบกลับ นี่เป็นเวลาหมดที่กำหนดค่าได้ง่ายที่สุด
client := &http.Client{Timeout: 10 * time.Second}เวลาหมดระดับทรานสปอร์ต
ปรับเวลาหมดของการสร้างการเชื่อมต่อและการจับมือ TLS อย่างละเอียดผ่าน http.Transport:
t := &http.Transport{
DialContext: (&net.Dialer{
Timeout: 5 * time.Second,
KeepAlive: 30 * time.Second,
}).DialContext,
TLSHandshakeTimeout: 5 * time.Second,
ResponseHeaderTimeout: 5 * time.Second,
}
client := &http.Client{Transport: t, Timeout: 30 * time.Second}เวลาหมดตาม Context
เวลาหมดของ Context มีผลต่อคำขอแต่ละรายการและส่งต่อไปยังการเรียกที่อยู่ถัดลงไป เมื่อถึงเส้นตาย เวลาหมดจะยกเลิกคำขอ
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)การกำหนดส่วนหัวคำขอ
เพิ่มส่วนหัวให้คำขอด้วย req.Header.Set ซึ่งจะแทนที่ค่าเดิม หรือ req.Header.Add ซึ่งจะเพิ่มค่าต่อท้าย:
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Accept", "application/json")
req.Header.Set("X-Request-ID", requestID)ส่วนหัวที่ใช้บ่อย
Content-Type ใช้สำหรับเนื้อหาคำขอ, Accept ใช้ระบุรูปแบบการตอบกลับที่ต้องการ, Authorization ใช้สำหรับโทเค็น Auth และ User-Agent ใช้ระบุไคลเอ็นต์
การอ่านส่วนหัวการตอบกลับ
อ่านส่วนหัวการตอบกลับจาก resp.Header.Get(key):
contentType := resp.Header.Get("Content-Type")
retryAfter := resp.Header.Get("Retry-After")เวลาหมดของการเชื่อมต่อที่ไม่ได้ใช้งาน
กำหนด IdleConnTimeout บนทรานสปอร์ตเพื่อปิดการเชื่อมต่อที่ไม่ได้ใช้งาน ป้องกันไม่ให้การเชื่อมต่อสะสมเมื่อปริมาณการรับส่งข้อมูลลดลง
t.IdleConnTimeout = 90 * time.Second
t.MaxIdleConnsPerHost = 10การกำหนดค่า TLS
ปรับแต่ง TLS เช่น รุ่นขั้นต่ำและใบรับรองไคลเอ็นต์ ผ่าน tls.Config บนทรานสปอร์ต:
t.TLSClientConfig = &tls.Config{MinVersion: tls.VersionTLS12}การตรวจจับข้อผิดพลาดจากเวลาหมด
แยกข้อผิดพลาดจากเวลาหมดออกจากข้อผิดพลาดเครือข่ายด้วย errors.As:
var urlErr *url.Error
if errors.As(err, &urlErr) && urlErr.Timeout() {
// handle timeout
}เวลาหมดต่อคำขอเทียบกับเวลาหมดของไคลเอ็นต์
Client.Timeout มีผลกับทุกคำขอ ส่วนเวลาหมดของ Context มีผลต่อคำขอแต่ละรายการและอาจสั้นกว่าเวลาหมดของไคลเอ็นต์ ทั้งสองค่าจะมีผล โดยใช้ค่าที่สั้นกว่า
ปิดการเชื่อมต่อคงอยู่
กำหนด DisableKeepAlives: true บนทรานสปอร์ตสำหรับโปรแกรมที่ทำงานช่วงสั้นและเปิดการเชื่อมต่อเพียงไม่กี่รายการ เพื่อหลีกเลี่ยงค่าใช้จ่ายของการจัดกลุ่มการเชื่อมต่อ
ตรวจสอบอย่างรวดเร็ว
เมื่อกำหนดทั้ง http.Client.Timeout และการหมดเวลาของบริบทไว้ การหมดเวลาใดจะมีผล
ทบทวน: การหมดเวลาและส่วนหัว
ประเด็นสำคัญ:
- client.Timeout: การหมดเวลารวมต่อคำขอหนึ่งรายการ
- context.WithTimeout: การหมดเวลาที่สามารถยกเลิกและส่งต่อได้
- req.Header.Set สำหรับกำหนดส่วนหัวแบบกำหนดเอง
- Transport สำหรับกำหนดการหมดเวลาของ TLS การเชื่อมต่อ และการเชื่อมต่อที่ไม่มีการใช้งานอย่างละเอียด
เรียนรู้ Go ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 51
- บทเรียน
- 203
คำถามที่พบบ่อย
บทเรียน “การตั้งเวลาหมดอายุและส่วนหัว” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตั้งเวลาหมดอายุและส่วนหัว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตั้งเวลาหมดอายุและส่วนหัว”
การหมดเวลาของไคลเอนต์ ส่วนหัวแบบกำหนดเอง และโทเค็นยืนยันตัวตน คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การตั้งเวลาหมดอายุและส่วนหัว” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การส่งคำขอ HTTP
- การตั้งเวลาหมดอายุและส่วนหัว
- การถอดรหัสการตอบกลับ JSON
- การจัดการข้อผิดพลาดและตรรกะการลองใหม่