Menetapkan Had Masa dan Pengepala
Had masa client, pengepala tersuai dan token pengesahan
Menetapkan Had Masa dan Pengepala ialah pelajaran Go Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Go Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Had masa peringkat klien
Tetapkan http.Client.Timeout untuk mengehadkan jumlah masa bagi permintaan dan respons. Ini ialah had masa yang paling mudah dikonfigurasikan.
client := &http.Client{Timeout: 10 * time.Second}Had masa peringkat pengangkutan
Perhalus had masa pembentukan sambungan dan jabat tangan TLS melalui 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}Had masa berasaskan konteks
Had masa konteks adalah mengikut permintaan dan disebarkan kepada panggilan hiliran. Had masa ini membatalkan permintaan apabila tarikh akhir berlalu.
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)Menetapkan pengepala permintaan
Tambahkan pengepala pada permintaan dengan req.Header.Set (menggantikan) atau req.Header.Add (menambah):
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Accept", "application/json")
req.Header.Set("X-Request-ID", requestID)Pengepala biasa
Content-Type untuk badan permintaan; Accept untuk format respons yang dikehendaki; Authorization untuk token pengesahan; User-Agent untuk pengenalpastian klien.
Membaca pengepala respons
Baca pengepala respons daripada resp.Header.Get(key):
contentType := resp.Header.Get("Content-Type")
retryAfter := resp.Header.Get("Retry-After")Had masa sambungan melahu
Tetapkan IdleConnTimeout pada pengangkutan untuk menutup sambungan melahu, sekali gus menghalangnya daripada terkumpul apabila trafik menurun.
t.IdleConnTimeout = 90 * time.Second
t.MaxIdleConnsPerHost = 10Konfigurasi TLS
Sesuaikan TLS seperti versi minimum dan sijil klien melalui tls.Config pada pengangkutan:
t.TLSClientConfig = &tls.Config{MinVersion: tls.VersionTLS12}Mengesan ralat had masa
Bezakan ralat had masa daripada ralat rangkaian menggunakan errors.As:
var urlErr *url.Error
if errors.As(err, &urlErr) && urlErr.Timeout() {
// handle timeout
}Had masa setiap permintaan berbanding klien
Client.Timeout digunakan pada setiap permintaan. Had masa konteks adalah mengikut permintaan dan boleh lebih singkat daripada had masa klien. Kedua-duanya dipatuhi — nilai yang lebih singkat akan digunakan.
Melumpuhkan sambungan berterusan
Tetapkan DisableKeepAlives: true pada pengangkutan untuk program berjangka pendek yang membuka sedikit sambungan, bagi mengelakkan overhed pengumpulan sambungan.
Semakan Ringkas
Apabila kedua-dua http.Client.Timeout dan had masa konteks ditetapkan, yang manakah berkuat kuasa?
Ringkasan: Had Masa dan Pengepala
Perkara penting:
- client.Timeout: had masa keseluruhan bagi setiap permintaan
- context.WithTimeout: had masa yang boleh dibatalkan dan disebarkan
- req.Header.Set untuk pengepala tersuai
- Transport untuk had masa TLS, pendailan dan keadaan melahu yang terperinci
Pelajari Go dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “Menetapkan Had Masa dan Pengepala” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Go Academy, termasuk “Menetapkan Had Masa dan Pengepala”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Menetapkan Had Masa dan Pengepala”?
Had masa client, pengepala tersuai dan token pengesahan Anda berlatih Go Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Go Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Go Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Menetapkan Had Masa dan Pengepala” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Membuat Permintaan HTTP
- Menetapkan Had Masa dan Pengepala
- Menyahkod Respons JSON
- Pengendalian Ralat dan Logik Percubaan Semula