Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Golang melaksanakan penghalaan

Golang melaksanakan penghalaan

WBOY
WBOYasal
2023-05-19 09:38:07682semak imbas

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
}

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

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,
  },
}

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
}

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)
  }
}

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)
}

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!

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
Artikel sebelumnya:Cara letak golangArtikel seterusnya:Cara letak golang