Rumah pembangunan bahagian belakang Golang golang mendapat laluan permintaan

golang mendapat laluan permintaan

May 15, 2023 am 10:03 AM

Golang ialah bahasa pengaturcaraan yang pantas, boleh dipercayai dan tetap yang digunakan secara meluas dalam aplikasi web, perkhidmatan rangkaian dan tugas pemprosesan data. Dalam aplikasi web, program perlu menerima permintaan daripada klien atau penyemak imbas, dan kemudian memproses setiap permintaan Ia biasanya perlu mendapatkan laluan permintaan untuk fungsi penghalaan. Artikel ini akan membincangkan cara mendapatkan laluan permintaan di Golang.

Bagaimana untuk mendapatkan laluan permintaan di Golang?

Di Golang, untuk mendapatkan laluan permintaan, anda perlu menggunakan objek bernama http.Request. Objek ini mengandungi semua maklumat tentang permintaan, termasuk kaedah permintaan, pengepala permintaan, badan permintaan, laluan permintaan, dsb. Dengan mengendalikan objek ini, kita boleh mendapatkan laluan permintaan.

Pertama sekali, apabila kita membina pelayan web, kita perlu menggunakan pakej http Golang. Berikut ialah kod contoh pelayan HTTP asas:

package main

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

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // 获取请求路径
        path := r.URL.Path
        fmt.Println("请求路径: ", path)
        fmt.Fprintln(w, "Welcome to my website!")
    })

    log.Fatal(http.ListenAndServe(":8080", nil))
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan fungsi pengendali HTTP yang menerima dua parameter: objek jenis http.ResponseWriter dan http.Request. Dalam fungsi tersebut, kami memanggil kaedah r.URL.Path untuk mendapatkan laluan permintaan dan mencetaknya.

Cara lain untuk mendapatkan laluan permintaan ialah dengan mengakses atribut http.Request r.URL.Path. Berikut ialah contoh kod:

package main

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

func handler(w http.ResponseWriter, r *http.Request) {
    // 获取请求路径
    path := r.URL.Path
    fmt.Println("请求路径: ", path)
    fmt.Fprintln(w, "Welcome to my website!")
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan fungsi pemprosesan handler Apabila permintaan diterima, dapatkan laluan permintaan melalui r.URL.Path dan keluarkannya ke konsol . Pada masa yang sama, kami menulis logik respons di dalam fungsi untuk membalas dengan mesej alu-aluan kembali kepada pelanggan.

Untuk maklumat terperinci tentang objek http.Request dan http.ResponseWriter, sila rujuk dokumentasi rasmi Golang. Dalam artikel ini, kami memberi tumpuan terutamanya pada cara mendapatkan laluan permintaan.

Untuk URL yang berbeza, mungkin terdapat kaedah dan logik tindak balas yang berbeza. Oleh itu, dalam persekitaran pengeluaran sebenar, kita perlu menggunakan penghala yang berbeza untuk mengendalikan permintaan yang berbeza. Biasanya, kami menggunakan penghala pihak ketiga seperti Gorilla Mux. Gorilla Mux ialah penghala yang berkuasa dan perpustakaan pemadanan URL yang boleh membantu kami mengurus logik penghalaan dengan lebih baik.

package main

import (
    "fmt"
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    // 创建新路由器
    r := mux.NewRouter()

    r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, "Hello, world!")
    })

    // 设定路由
    r.HandleFunc("/articles", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, "这是我的文章列表页面!")
    })

    // 设定路由
    r.HandleFunc("/articles/{id}", func(w http.ResponseWriter, r *http.Request) {
        // 获取路由参数
        vars := mux.Vars(r)
        id := vars["id"]

        fmt.Fprintf(w, "这是文章 %s 的详细页面!", id)
    })

    // 启动服务器
    log.Fatal(http.ListenAndServe(":8080", r))
}
Salin selepas log masuk

Dalam penghala, kita boleh menggunakan kaedah r.HandleFunc untuk menentukan peraturan penghalaan dan fungsi pemprosesan yang berbeza. Sebagai contoh, dalam contoh di atas, kami mentakrifkan dua peraturan penghalaan, /articles dan /articles/{id}, peraturan penghalaan pertama digunakan untuk membalas permintaan halaman senarai artikel dan peraturan penghalaan kedua digunakan untuk mendapatkan kandungan khusus berdasarkan id Halaman butiran artikel.

Jika URL mengandungi parameter dinamik, kita boleh menggunakan kaedah mux.Vars untuk mendapatkan nilainya dan menghantar parameter ini kepada fungsi pengendali. Dalam kod di atas, kami memperoleh nilai parameter vars["id"] dalam URL melalui id dan mengeluarkannya kepada klien.

Ringkasan

Di Golang, anda perlu mendapatkan laluan permintaan melalui objek http.Request. Kita boleh menggunakan atribut r.URL.Path untuk mendapatkan laluan. Pada masa yang sama, kami juga boleh menggunakan penghala pihak ketiga untuk mengurus logik penghalaan dan fungsi pemprosesan. Gorilla Mux ialah penghala yang berkuasa dan perpustakaan pemadanan URL yang boleh membantu kami mengurus logik penghalaan dengan lebih baik.

Atas ialah kandungan terperinci golang mendapat laluan permintaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah? GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah? Mar 03, 2025 pm 05:17 PM

GO Language Pack Import: Apakah perbezaan antara garis bawah dan tanpa garis bawah?

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego? Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego? Mar 03, 2025 pm 05:22 PM

Bagaimana untuk melaksanakan pemindahan maklumat jangka pendek antara halaman dalam kerangka beego?

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go? Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go? Mar 03, 2025 pm 05:18 PM

Bagaimana cara menukar senarai hasil pertanyaan mysql ke dalam slice struktur tersuai dalam bahasa Go?

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO? Mar 10, 2025 pm 03:20 PM

Bagaimana saya boleh menentukan kekangan jenis tersuai untuk generik di GO?

Bagaimana saya menulis objek dan stub untuk ujian di GO? Bagaimana saya menulis objek dan stub untuk ujian di GO? Mar 10, 2025 pm 05:38 PM

Bagaimana saya menulis objek dan stub untuk ujian di GO?

Bagaimana anda menulis ujian unit di GO? Bagaimana anda menulis ujian unit di GO? Mar 21, 2025 pm 06:34 PM

Bagaimana anda menulis ujian unit di GO?

Bagaimana cara menulis fail dalam bahasa Go dengan mudah? Bagaimana cara menulis fail dalam bahasa Go dengan mudah? Mar 03, 2025 pm 05:15 PM

Bagaimana cara menulis fail dalam bahasa Go dengan mudah?

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya? Mar 10, 2025 pm 05:36 PM

Bagaimana saya boleh menggunakan alat pengesanan untuk memahami aliran pelaksanaan aplikasi saya?

See all articles