การส่งคำขอ HTTP
ใช้ GET และ POST ร่วมกับ http.NewRequest และ http.DefaultClient
การส่งคำขอ HTTP เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
ทางลัด http.Get
http.Get(url) เป็นวิธีที่ง่ายที่สุดในการส่งคำขอ GET ควรปิดเนื้อหาการตอบกลับเสมอ
resp, err := http.Get("https://api.example.com/users")
if err != nil { return err }
defer resp.Body.Close()http.DefaultClient
http.Get ใช้ DefaultClient ระดับแพ็กเกจ สำหรับระบบจริง ให้สร้างไคลเอ็นต์แบบกำหนดเองพร้อมกำหนดเวลาหมด
client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Get(url)http.NewRequest เพื่อควบคุมได้เต็มที่
ใช้ http.NewRequest เพื่อกำหนดวิธีการ ส่วนหัว และเนื้อหาคำขอ:
req, err := http.NewRequestWithContext(ctx, "POST", url, body)
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)เนื้อหาคำขอ
ส่งเนื้อหาคำขอผ่าน io.Reader สำหรับข้อมูล JSON ให้ใช้ bytes.NewBuffer(data) หรือ strings.NewReader
data, _ := json.Marshal(payload)
req, _ := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(data))การตรวจสอบสถานะการตอบกลับ
ตรวจสอบรหัสสถานะ HTTP เสมอ เพราะโดยค่าเริ่มต้น 4xx/5xx จะไม่ถูกส่งคืนเป็นข้อผิดพลาดของ Go
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("unexpected status: %d", resp.StatusCode)
}การถอดรหัสการตอบกลับ JSON
ถอดรหัสเนื้อหาการตอบกลับด้วย json.Decoder เพื่อไม่ต้องอ่านทั้งหมดเข้าไปในหน่วยความจำก่อน:
var result APIResponse
json.NewDecoder(resp.Body).Decode(&result)พารามิเตอร์การค้นหา
สร้างสตริงการค้นหาด้วย url.Values แล้วแนบเข้ากับ URL:
params := url.Values{}
params.Set("page", "1")
params.Set("limit", "20")
reqURL := baseURL + "?" + params.Encode()Client.Do และทรานสปอร์ตแบบกำหนดเอง
ห่อ http.DefaultTransport เพื่อเพิ่มตรรกะการลองใหม่ การกำหนดค่า TLS แบบกำหนดเอง หรือการตั้งค่าพร็อกซี โดยยังคงพฤติกรรมเริ่มต้นไว้
ต้องปิดเนื้อหาการตอบกลับ
หากไม่ปิดเนื้อหาการตอบกลับ การเชื่อมต่อ TCP พื้นฐานจะรั่วไหล ควรใช้ defer resp.Body.Close() เสมอ แม้แต่กับการตอบกลับที่มีข้อผิดพลาด
การติดตามการเปลี่ยนเส้นทาง
ไคลเอ็นต์เริ่มต้นจะติดตามการเปลี่ยนเส้นทางได้สูงสุด 10 ครั้ง กำหนด client.CheckRedirect เพื่อปรับแต่งหรือปิดการติดตามการเปลี่ยนเส้นทาง
การกำหนด User-Agent
กำหนดส่วนหัว User-Agent ที่สื่อความหมาย เพื่อให้บันทึกของเซิร์ฟเวอร์ระบุไคลเอ็นต์ของคุณได้:
req.Header.Set("User-Agent", "myapp/1.0 (+https://myapp.com)")ตรวจสอบความเข้าใจ
เหตุใดจึงควรปิดเนื้อหาการตอบกลับ HTTP เสมอ
ทบทวน: การส่งคำขอ HTTP
ประเด็นสำคัญ:
- ใช้ defer resp.Body.Close() เสมอ
- สร้าง http.Client แบบกำหนดเองพร้อม Timeout สำหรับระบบจริง
- ใช้ http.NewRequestWithContext สำหรับ Context และส่วนหัวแบบกำหนดเอง
- ตรวจสอบ resp.StatusCode เพราะข้อผิดพลาด HTTP ไม่ใช่ข้อผิดพลาดของ Go
คำถามที่พบบ่อย
บทเรียน “การส่งคำขอ HTTP” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การส่งคำขอ HTTP” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การส่งคำขอ HTTP”
ใช้ GET และ POST ร่วมกับ http.NewRequest และ http.DefaultClient คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การส่งคำขอ HTTP” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การส่งคำขอ HTTP
- การตั้งเวลาหมดอายุและส่วนหัว
- การถอดรหัสการตอบกลับ JSON
- การจัดการข้อผิดพลาดและตรรกะการลองใหม่