Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan pemajuan menggunakan Golang

Bagaimana untuk melaksanakan pemajuan menggunakan Golang

PHPz
PHPzasal
2023-03-30 11:39:161290semak imbas

Golang ialah bahasa pengaturcaraan yang cekap dengan kesesuaian dan prestasi yang baik, menjadikannya sesuai untuk melaksanakan aplikasi rangkaian. Artikel ini akan memperkenalkan cara menggunakan Golang untuk menulis aplikasi rangkaian mudah untuk melaksanakan fungsi permintaan pemajuan.

Sebelum kita mula menulis aplikasi, kita perlu memahami asas permintaan HTTP dan penghalaan rangkaian. Permintaan HTTP ialah permintaan yang dihantar oleh klien kepada pelayan Selepas pelayan menerima permintaan, ia menentukan cara mengendalikan permintaan melalui penghalaan. Penghalaan rangkaian ialah kaedah memetakan permintaan kepada pengendali. Dalam aplikasi, peraturan penghalaan perlu ditakrifkan untuk memutuskan cara mengendalikan permintaan HTTP yang berbeza.

Pertama, kita perlu mencipta pelayan HTTP asas menggunakan perpustakaan standard yang disediakan oleh Golang. Berikut ialah contoh mudah:

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, World! %s", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

Dalam contoh di atas, kami telah mencipta fungsi yang dipanggil "pengendali" yang menerima dua parameter, satu ialah "w" dan satu lagi ialah "r". Parameter pertama mewakili respons yang akan dihantar, dan parameter kedua mewakili permintaan yang diterima. Dalam fungsi ini, kami hanya menghantar mesej "Hello, World!" diikuti dengan laluan yang diminta.

Kini, kita boleh memulakan pelayan dengan menjalankan arahan berikut:

go run main.go

Ini akan memulakan pelayan mendengar pada port 8080 untuk mengendalikan permintaan daripada pelanggan. Jika anda menjalankan pelayan secara tempatan, anda boleh mengujinya dengan melawati http://localhost:8080 dalam penyemak imbas anda.

Seterusnya, kita perlu menentukan penghantar penghalaan supaya pelayan kami boleh memajukan permintaan ke pelayan lain. Berikut ialah contoh mudah:

package main

import (
    "fmt"
    "log"
    "net/http"
    "net/http/httputil"
    "net/url"
)

func main() {
    target, err := url.Parse("http://localhost:3000/")
    if err != nil {
        log.Fatal(err)
    }
    proxy := httputil.NewSingleHostReverseProxy(target)
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        proxy.ServeHTTP(w, r)
    })
    fmt.Println("Listening on :8080...")
    http.ListenAndServe(":8080", nil)
}

Dalam kod, kami telah mentakrifkan pembolehubah yang dipanggil "sasaran" yang menghala ke pelayan sasaran yang mana kami akan memajukan permintaan HTTP. Kami kemudian mencipta objek proksi terbalik bernama "proksi" dan menambah pelayan sasaran sebagai sasarannya. Seterusnya, kami akan mencipta fungsi pengendali dan memajukan permintaan kepada sasaran menggunakan proksi terbalik.

Dalam contoh di atas, kami menggunakan fungsi pengendali jenis "http.HandlerFunc", yang akan menerima permintaan HTTP daripada klien dan memajukannya ke pelayan sasaran. Dengan cara ini, kami boleh memulakan pelayan kami dengan mudah dan memajukan permintaan menggunakan arahan mudah. Jalankan sahaja arahan berikut:

go run main.go

Dalam kod di atas, kami telah menggunakan fungsi "http.HandleFunc" untuk mencipta laluan yang mengubah hala semua permintaan ke proksi terbalik dan menggunakan terbalik Objek proksi ke hadapan permintaan kepada pelayan sasaran.

Ringkasan

Dalam artikel ini, kami mempelajari cara membuat pelayan HTTP mudah menggunakan Golang dan memajukan permintaan ke pelayan sasaran menggunakan proksi terbalik. Ini adalah contoh asas, sila ubah dan lanjutkan untuk memenuhi keperluan aplikasi anda. Setiap kali anda perlu mengendalikan permintaan dan penghalaan HTTP, anda boleh menggunakan kuasa Golang untuk membuat aplikasi web anda sendiri dengan pantas.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pemajuan menggunakan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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