Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengubah suai laluan dalam golang

Bagaimana untuk mengubah suai laluan dalam golang

PHPz
PHPzasal
2023-04-14 10:31:21826semak imbas

Dalam aplikasi web, penghalaan merujuk kepada coretan kod yang mencari aplikasi berdasarkan URL yang diminta. Sangat mudah untuk mengubah suai penghalaan di Golang Artikel ini akan memperkenalkan cara menggunakan Golang untuk mengubah suai penghalaan untuk mencipta aplikasi web anda sendiri.

Untuk memahami cara mengubah suai penghalaan, kami memerlukan asas kod untuk mengendalikan permintaan HTTP. Pakej net/http dari perpustakaan standard boleh digunakan untuk tujuan ini. Kita juga perlu menggunakan pakej gorila/mux, yang menyediakan mekanisme penghalaan yang lebih maju.

Pertama, kita perlu memasang pakej gorila/mux. Pasang menggunakan arahan berikut:

go get -u github.com/gorilla/mux

Seterusnya, kita akan melihat contoh menggunakan pakej gorilla/mux, yang mengandungi dua laluan:

package main
  
import (
    "encoding/json"
    "log"
    "net/http"
 
    "github.com/gorilla/mux"
)
 
type Product struct {
    ID    string  `json:"id"`
    Name  string  `json:"name"`
    Price float64 `json:"price"`
}
  
var products []Product
  
func getProducts(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(products)
}
  
func getProduct(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    params := mux.Vars(r)
    for _, item := range products {
        if item.ID == params["id"] {
            json.NewEncoder(w).Encode(item)
            return
        }
    }
    json.NewEncoder(w).Encode(&Product{})
}
  
func main() {
    router := mux.NewRouter()
 
    products = append(products, Product{ID: "1", Name: "Product 1", Price: 29.99})
    products = append(products, Product{ID: "2", Name: "Product 2", Price: 39.99})
    products = append(products, Product{ID: "3", Name: "Product 3", Price: 49.99})
 
    router.HandleFunc("/products", getProducts).Methods("GET")
    router.HandleFunc("/products/{id}", getProduct).Methods("GET")
 
    log.Fatal(http.ListenAndServe(":8000", router))
}

Dalam contoh di atas, kita mencipta dua fungsi pengendali: getProducts dan getProduct. Fungsi pertama mendapatkan semua produk dan menghantarnya kembali kepada pelanggan. Fungsi kedua mendapat satu produk, yang boleh dicari dengan ID. Kami juga menentukan laluan untuk setiap fungsi pengendali, ini boleh dilakukan dengan menggunakan kaedah router.HandleFunc dan .Methods.

Kita dapat melihat bahawa dalam laluan kedua, terdapat parameter {id}, yang digunakan untuk menghantar ID dalam URL. Parameter ini diperoleh daripada URL melalui fungsi mux.Vars.

Akhir sekali, fungsi utama mentakrifkan pelayan HTTP dan portnya, yang menggunakan pakej gorila/mux untuk mencipta laluan. Apabila kami menjalankan aplikasi, ia memulakan pelayan HTTP dan mendengar pada port 8000.

Sekarang kami telah mencipta laluan kami dan menentukan fungsi pengendali, kami hanya perlu menggunakan fungsi http.HandleFunc dan http.ListenAndServe untuk mendengar semua permintaan pada port 8000.

Ringkasan

Melalui contoh di atas, kita dapat melihat bahawa sangat mudah untuk mengubah suai penghalaan menggunakan Golang, dan fungsi penghalaan lanjutan boleh dilaksanakan dengan lebih mudah menggunakan pakej gorila/mux.

Kami boleh menggunakan kaedah yang serupa untuk menambah laluan baharu atau menukar laluan sedia ada. Ini membolehkan kami mencipta aplikasi web yang kompleks dengan cepat dan tanpa banyak pengekodan atau keluk pembelajaran.

Jadi, jika anda sedang membina aplikasi web, saya syorkan menggunakan Golang dan pakej gorila/mux untuk mengubah suai penghalaan dan mengendalikan permintaan HTTP.

Atas ialah kandungan terperinci Bagaimana untuk mengubah suai laluan dalam 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