Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk melaksanakan pengendalian permintaan tamat masa menggunakan http.Transport in Go?

Bagaimana untuk melaksanakan pengendalian permintaan tamat masa menggunakan http.Transport in Go?

PHPz
Lepaskan: 2023-07-22 16:37:17
asal
1264 orang telah melayarinya

Bagaimana untuk menggunakan http.Transport untuk melaksanakan pemprosesan permintaan tamat masa dalam Go?

Dalam bahasa Go, kami selalunya perlu menghantar permintaan HTTP untuk mendapatkan data atau berinteraksi dengan API luaran. Walau bagaimanapun, disebabkan oleh kerumitan persekitaran rangkaian, tamat masa permintaan kadangkala akan dihadapi. Untuk mengelakkan masalah menunggu lama dan kegagalan untuk mendapatkan respons dalam masa, kami boleh menggunakan http.Transport Go untuk melaksanakan pemprosesan permintaan tamat masa.

In Go, http.Transport ialah struktur yang bertanggungjawab untuk menguruskan penggunaan semula sambungan klien HTTP dan penghantaran permintaan. Untuk melaksanakan pemprosesan tamat masa, kita boleh menggunakan atribut Tamat Masa dalam http.Transport. Langkah-langkah khusus adalah seperti berikut:

  1. Perkenalkan pakej yang diperlukan

Untuk menggunakan http.Transport dan http.Client, kami perlu memperkenalkan pakej yang berkaitan terlebih dahulu.

package main

import (
    "net/http"
    "fmt"
    "time"
)
Salin selepas log masuk
  1. Buat objek http.Client

Dalam Go, http.Client mewakili klien HTTP, dan kami perlu menggunakannya untuk menghantar permintaan. Kita boleh mendapatkan objek http.Transport dengan memanggil kaedah Pengangkutan http.Client dan menetapkan tamat masa.

func main() {
    transport := &http.Transport{
        ResponseHeaderTimeout: time.Second * 5,
    }
    client := &http.Client{
        Transport: transport,
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menetapkan ResponseHeaderTimeout kepada 5 saat. Ini bermakna jika tiada pengepala respons diterima dalam masa 5 saat, permintaan akan dibatalkan secara automatik.

  1. Hantar permintaan HTTP

Selepas menyediakan objek http.Client, kami boleh menggunakannya untuk menghantar permintaan HTTP.

func main() {
    transport := &http.Transport{
        ResponseHeaderTimeout: time.Second * 5,
    }
    client := &http.Client{
        Transport: transport,
    }

    resp, err := client.Get("https://api.example.com")
    if err != nil {
        fmt.Println("请求出错:", err)
        return
    }

    defer resp.Body.Close()

    // 处理响应
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan kaedah klien.Get untuk menghantar permintaan GET ke "https://api.example.com". Jika tiada maklumat pengepala respons diterima dalam masa 5 saat, permintaan akan dibatalkan secara automatik dan ralat akan dikembalikan.

  1. Mengendalikan respons

Selepas menerima respons, kami boleh memprosesnya. Berikut adalah contoh mudah untuk membaca kandungan respons.

func main() {
    transport := &http.Transport{
        ResponseHeaderTimeout: time.Second * 5,
    }
    client := &http.Client{
        Transport: transport,
    }

    resp, err := client.Get("https://api.example.com")
    if err != nil {
        fmt.Println("请求出错:", err)
        return
    }

    defer resp.Body.Close()

    // 处理响应
    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println("响应内容:", string(body))
}
Salin selepas log masuk

Di atas ialah cara menggunakan bahasa http.Transport dalam Go untuk melaksanakan pemprosesan permintaan tamat masa. Dengan menetapkan sifat Timeout http.Transport dan menggunakan http.Client untuk menghantar permintaan dan menerima respons, kami boleh melaksanakan logik pemprosesan tamat masa dengan mudah. Ini bukan sahaja menambah baik kemantapan program, malah mengelak daripada menyekat program kerana ketidakupayaan untuk mendapatkan respons dalam masa akibat menunggu lama.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengendalian permintaan tamat masa menggunakan http.Transport in Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan