Penjelasan terperinci tentang pakej permintaan Golang

PHPz
Lepaskan: 2023-04-14 09:40:51
asal
868 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang semakin popular, dan kawasan aplikasinya di bahagian pelayan semakin meningkat dari hari ke hari. Pembangun semua tahu bahawa permintaan rangkaian adalah bahagian penting dalam pembangunan sisi pelayan, jadi bagaimana untuk melaksanakan permintaan rangkaian di Golang? Artikel ini akan menerangkan pakej permintaan Golang secara terperinci supaya semua orang dapat lebih memahami penggunaan permintaan rangkaian Golang.

Apakah pakej permintaan?

Pakej permintaan ialah kit alat dalam pustaka standard Golang untuk membuat permintaan rangkaian. Ia menyediakan pelbagai kaedah permintaan seperti http, net, websocket, dsb., serta kaedah permintaan asas, pengepala permintaan, badan permintaan dan fungsi lain. Apabila menghantar permintaan http, kita perlu memasang pengepala permintaan dan badan permintaan, nyatakan kaedah permintaan, alamat permintaan dan nombor port, dan kemudian membuat permintaan kepada pelayan. Pakej permintaan menerangkan cara melaksanakan operasi ini, yang sangat memudahkan pembangunan rangkaian kami.

Permintaan HTTP

Di Golang, untuk menghantar permintaan HTTP, anda perlu menggunakan struktur Klien dan Permintaan yang disediakan oleh perpustakaan net/http. Struktur Klien mewakili klien HTTP, dan struktur Permintaan mewakili permintaan HTTP. Kami menggunakan Klien untuk menghantar permintaan Permintaan. Begini cara menghantar permintaan GET:

import (
    "net/http"
    "io/ioutil"
    "fmt"
)

func main() {
    resp, err := http.Get("http://example.com/")
    if err != nil {
        // handle error
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        // handle error
    }
    fmt.Println(string(body))
}
Salin selepas log masuk

Kod ini akan menghantar permintaan GET ke alamat http://example.com/, dan kemudian mencetak maklumat respons yang dikembalikan oleh pelayan. Kami menggunakan kaedah http.Get untuk menghantar permintaan dan mengembalikan maklumat ralat jika ralat berlaku. Ingat untuk menutup badan respons selepas permintaan selesai untuk mengelakkan pembaziran sumber yang tidak perlu.

Selain permintaan GET, kami juga boleh menghantar POST, PUT, DELETE dan kaedah permintaan lain Kami hanya perlu menggunakan kaedah Client's Do dan lulus dalam permintaan Request. Berikut ialah contoh permintaan POST:

import (
    "net/http"
    "bytes"
    "fmt"
)

func main() {
    url := "http://example.com/api"
    jsonData := []byte(`{"key":"value"}`)

    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json")
    
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        // handle error
    }
    defer resp.Body.Close()
    
    // handle response
}
Salin selepas log masuk

Dalam permintaan POST, kita perlu menentukan kaedah permintaan sebagai POST dan lulus dalam alamat permintaan dan badan permintaan. Terdapat sesuatu yang perlu diperhatikan di sini. Permintaan POST perlu menetapkan medan Jenis Kandungan dalam pengepala permintaan untuk memaklumkan pelayan jenis data badan permintaan. Di sini, kami menggunakan pakej json dalam golang untuk menukar badan permintaan ke dalam format json dan menghantarnya ke dalam badan permintaan.

Permintaan WebSocket

WebSocket ialah protokol yang disediakan dalam HTML5 untuk komunikasi dupleks penuh antara penyemak imbas dan pelayan. Di Golang, kita boleh menggunakan kaedah Dail yang disediakan oleh perpustakaan websocket untuk mewujudkan sambungan WebSocket, dan menggunakan kaedah WriteMessage dan ReadMessage untuk pertukaran data. Berikut ialah contoh sambungan WebSocket:

import (
    "fmt"
    "log"
    "net/url"
    "github.com/gorilla/websocket"
)

func main() {
    u := url.URL{Scheme: "ws", Host: "echo.websocket.org", Path: "/"}
    fmt.Println("connecting to ", u.String())

    conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
    if err != nil {
        log.Fatal("dial:", err)
    }
    defer conn.Close()

    message := []byte("hello, world!")
    err = conn.WriteMessage(websocket.TextMessage, message)
    if err != nil {
        log.Println("write:", err)
        return
    }

    _, p, err := conn.ReadMessage()
    if err != nil {
        log.Println("read:", err)
        return
    }
    fmt.Printf("received: %s\n", p)
}
Salin selepas log masuk

Kod ini akan mewujudkan sambungan WebSocket ke https://echo.websocket.org, kemudian menghantar mesej teks "hello, dunia!" Cetak mesej respons yang dikembalikan oleh pelayan. Kami menggunakan kaedah Dail yang disediakan oleh perpustakaan soket web untuk mewujudkan sambungan, dan menggunakan kaedah WriteMessage untuk menghantar mesej dan kaedah ReadMessage untuk menerima mesej. Berbanding dengan permintaan HTTP, permintaan WebSocket mempunyai prestasi masa nyata dan masa nyata yang lebih tinggi.

Ringkasan

Artikel ini menerangkan secara terperinci pakej permintaan dalam Golang, termasuk permintaan HTTP, permintaan WebSocket dan permintaan pemasangan dan penghantaran. Dengan mengkaji artikel ini, kami boleh menguasai penggunaan dan teknik permintaan rangkaian Golang dengan lebih baik, serta menyediakan lebih banyak alatan dan kaedah untuk pembangunan bahagian pelayan.

Atas ialah kandungan terperinci Penjelasan terperinci tentang pakej permintaan Golang. 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