Rumah > pembangunan bahagian belakang > Golang > Golang melaksanakan penghalaan

Golang melaksanakan penghalaan

WBOY
Lepaskan: 2023-05-19 09:38:07
asal
722 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang sangat popular Ia menyediakan rangka kerja dan perpustakaan yang sangat berkuasa, membolehkan pembangun membuat aplikasi web berprestasi tinggi dengan mudah. Di Golang, penghalaan ialah salah satu komponen teras aplikasi web Ia boleh memetakan URL dan menghantar permintaan kepada pengendali yang betul. Dalam artikel ini, kita akan membincangkan cara melaksanakan penghalaan menggunakan Golang.

Di Golang, anda boleh menggunakan pelbagai rangka kerja untuk melaksanakan penghalaan, termasuk gin, beego, martini, dsb. Rangka kerja ini menyediakan keupayaan penghalaan yang berkuasa dan mudah digunakan. Walau bagaimanapun, dalam artikel ini, kami akan memahami kerja dalaman penghala dengan menulis penghala kami sendiri, yang akan sangat membantu untuk mendapatkan cerapan tentang pembangunan aplikasi web.

Pertama, kita perlu menentukan struktur penghalaan, yang mengandungi kaedah HTTP (GET, POST, dll.), laluan URL dan fungsi pemprosesan. Struktur ini akan digunakan sebagai entri jadual penghalaan.

type Route struct {
  Method string
  Pattern string
  HandlerFunc http.HandlerFunc
}
Salin selepas log masuk

Seterusnya, kita perlu menentukan jadual penghalaan, yang merupakan kepingan struktur Laluan. Jadual penghalaan akan mengandungi semua laluan yang disokong dan fungsi pengendali yang sepadan.

type Routes []Route
Salin selepas log masuk

Dalam jadual penghalaan, kita boleh menentukan beberapa laluan asas, seperti "/", yang akan digunakan untuk direktori akar dan "/health", yang akan digunakan untuk mengembalikan status kesihatan permohonan itu. Ia juga mungkin untuk menentukan laluan lain, seperti "/users", untuk mengendalikan tindakan pengguna.

var routes = Routes{
  Route{
    "GET",
    "/",
    HomeHandler,
  },
  Route{
    "GET",
    "/health",
    HealthHandler,
  },
  Route{
    "GET",
    "/users",
    GetUsersHandler,
  },
  Route{
    "POST",
    "/users",
    CreateUserHandler,
  },
  Route{
    "PUT",
    "/users/{id}",
    UpdateUserHandler,
  },
  Route{
    "DELETE",
    "/users/{id}",
    DeleteUserHandler,
  },
}
Salin selepas log masuk

Dalam contoh di atas, kami menentukan 6 laluan, setiap satu dengan kaedah HTTP dan laluan URL yang berbeza, dan menggunakan fungsi pengendali yang sepadan untuk memproses laluan ini.

Seterusnya, kita perlu mencipta struktur penghala, yang akan mengandungi jadual penghalaan dan menyediakan fungsi penghalaan. Struktur ini akan mengandungi HTTP ServerMux.

type Router struct {
  Routes Routes
  mux *http.ServeMux
}
Salin selepas log masuk

Dalam penghala, kami akan menentukan kaedah untuk memulakan HTTP ServerMux dan jadual penghalaan.

func (router *Router) Init() {
  router.mux = http.NewServeMux()
  for _, route := range router.Routes {
    router.mux.HandleFunc(route.Pattern, route.HandlerFunc)
  }
}
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan kaedah HandleFunc HTTP ServerMux untuk mendaftarkan laluan URL dan fungsi pengendali ke dalam penghala. Ini akan membolehkan penghala menghalakan permintaan ke fungsi pengendali yang betul.

Akhir sekali, kita perlu mencipta pelayan HTTP menggunakan struktur penghala.

func main() {
  router := Router{Routes: routes}
  router.Init()
  http.ListenAndServe(":8080", router.mux)
}
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan fungsi ListenAndServe untuk memulakan pelayan HTTP dan menghantar HTTP ServerMux dari penghala ke fungsi tersebut.

Ini semua tentang melaksanakan penghalaan di Golang. Walaupun dalam aplikasi dunia nyata, jarang sekali perlu menulis penghala anda sendiri, memahami cara penghala berfungsi adalah penting untuk mendapatkan cerapan tentang pembangunan aplikasi web Golang.

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