Rumah > pembangunan bahagian belakang > Golang > golang melaksanakan penghalaan http

golang melaksanakan penghalaan http

WBOY
Lepaskan: 2023-05-09 22:44:07
asal
917 orang telah melayarinya

Dalam pembangunan web, penghalaan adalah konsep yang sangat penting. Penghalaan menentukan cara permintaan diproses dan merupakan bahagian penting dalam rangka kerja web. Artikel ini akan memperkenalkan cara menggunakan Golang untuk melaksanakan penghalaan HTTP.

Golang ialah bahasa pengaturcaraan baharu yang dilancarkan oleh Google Ia dicirikan oleh kesederhanaan, kecekapan, keselamatan dan menyokong pengaturcaraan serentak Ia adalah bahasa pengaturcaraan yang sangat sesuai untuk pembangunan web. Oleh itu, Golang digunakan sebagai bahasa pengaturcaraan untuk melaksanakan penghalaan HTTP dalam artikel ini.

  1. Pengenalan

Penghalaan HTTP ialah proses yang mana aplikasi memetakan permintaan pengguna kepada pengendali. Apabila permintaan tiba di pelayan web, ia mencari pengendali berdasarkan URL permintaan dan kaedah HTTP (GET, POST, PUT, dll.) dan menghantar permintaan kepada pengendali tersebut. Penghalaan HTTP berada di tengah-tengah aplikasi web dan menentukan cara pengguna berinteraksi dengan aplikasi tersebut.

Di Golang, penghalaan HTTP boleh dilaksanakan dalam pelbagai cara. Antaranya, yang lebih biasa digunakan ialah pakej http dalam perpustakaan standard dan pakej pihak ketiga mux.

  1. Pakej http dalam perpustakaan standard

Dalam perpustakaan standard Golang, terdapat pakej yang dipanggil http, yang menyediakan pelaksanaan klien HTTP dan pelayan HTTP. Dalam pakej ini, fungsi http.HandleFunc disediakan. Dengan memanggil fungsi ini, fungsi boleh didaftarkan dalam jadual penghalaan.

Fungsi ini memerlukan dua parameter Yang pertama ialah alamat penghalaan jenis rentetan, dan yang kedua ialah fungsi ini mesti mematuhi protokol http.HandlerFunc.

Berikut ialah contoh:

package main

import (
    "fmt"
    "net/http"
)

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

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, Golang HTTP server!")
}
Salin selepas log masuk

Dalam kod di atas, fungsi pengendali ditakrifkan, yang menerima permintaan HTTP dan menghantar "Helo, pelayan HTTP Golang kembali kepada klien." Kemudian, gunakan fungsi http.HandleFunc() untuk mendaftarkan fungsi pengendali pada URL "/" dan gunakan fungsi http.ListenAndServe() untuk memulakan pelayan HTTP.

Barisan kod ini membenarkan pelayan mendengar secara setempat pada port 8080, dan semua permintaan yang memasuki port ini akan diserahkan kepada pakej http untuk diproses.

Jika anda menjalankan program ini dalam baris arahan dan membuka halaman web http://localhost:8080/, anda akan melihat mesej "Helo, pelayan HTTP Golang!"

  1. Pakej pihak ketiga mux

Walaupun pakej http melaksanakan fungsi penghalaan asas, ia tidak cukup fleksibel untuk menyokong berbilang kaedah HTTP, berbilang parameter dan fungsi Penghalaan lanjutan yang lain . Oleh itu, dalam pembangunan sebenar, pakej penghalaan pihak ketiga biasanya digunakan, yang mana mux adalah yang lebih popular.

mux ialah penghala dan penjadual permintaan HTTP yang berkuasa, yang boleh digunakan untuk mengendalikan permintaan HTTP Golang. mux menyediakan banyak ciri penghalaan lanjutan, termasuk padanan ungkapan biasa, perisian tengah dan banyak lagi.

Berikut ialah contoh:

package main

import (
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    r := mux.NewRouter()

    r.HandleFunc("/", homeHandler).Methods(http.MethodGet)

    r.HandleFunc("/products", productsHandler).Methods(http.MethodGet)
    r.HandleFunc("/products/{key}", productHandler).Methods(http.MethodGet)

    http.ListenAndServe(":8080", r)
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Home Page")
}

func productsHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Product Page")
}

func productHandler(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    key := vars["key"]
    fmt.Fprintf(w, "Product ID: %s", key)
}
Salin selepas log masuk

Dalam contoh di atas, kami mencipta penghala baharu menggunakan fungsi mux.NewRouter().

Gunakan fungsi r.HandleFunc() untuk menambah peraturan penghalaan pada penghala.

Betul sepadan dengan permintaan GET yang dimasukkan oleh penyemak imbas di http://localhost:8080/ selepas bekas dimulakan, maka penghala akan memadankan laluan "/" dan memanggil fungsi homeHandler().

Sepadan dengan permintaan GET http://localhost:8080/products yang dimasukkan oleh penyemak imbas selepas bekas dimulakan, maka penghala akan memadankan laluan "/products" dan memanggil fungsi productsHandler().

Betul sepadan dengan permintaan GET http://localhost:8080/products/123 yang dimasukkan oleh penyemak imbas selepas bekas dimulakan, maka penghala akan sepadan dengan laluan "/products/{key}" dan panggil fungsi productHandler() , dengan "123" ialah nilai pembolehubah "kunci".

  1. Ringkasan

Artikel ini memperkenalkan dua cara untuk menggunakan Golang untuk melaksanakan penghalaan HTTP: pakej http perpustakaan standard dan pakej penghalaan pihak ketiga mux. Walaupun pakej http dalam perpustakaan standard adalah ringkas dan mudah digunakan, ia tidak cukup fleksibel untuk menyokong fungsi penghalaan lanjutan. Oleh itu, dalam pembangunan sebenar, adalah disyorkan untuk menggunakan pakej penghalaan pihak ketiga mux, yang menyediakan peraturan penghalaan yang kaya dan fungsi lanjutan untuk memenuhi keperluan pelbagai aplikasi web.

Atas ialah kandungan terperinci golang melaksanakan penghalaan http. 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