Menyajikan Halaman Web dan Laluan API pada Port yang Sama dengan Corak Pemegang Berbeza
Menyajikan kedua-dua halaman web dan laluan API pada port yang sama menggunakan corak pemegang yang berbeza adalah keperluan biasa dalam pembangunan web. Begini cara untuk mencapainya dalam Go menggunakan pakej net/http:
Pakej net/http menyediakan jenis ServeMux, yang menguruskan set pengendali untuk permintaan HTTP masuk. Pendaftaran pengendali dilakukan melalui kaedah Handle. Mengikut dokumentasi, corak yang lebih panjang diutamakan daripada yang lebih pendek. Sifat ini boleh dimanfaatkan untuk menyampaikan halaman web dan laluan API secara serentak pada port yang sama.
Sebagai contoh, untuk menyediakan halaman web di bawah laluan akar / dan laluan API di bawah /api, anda boleh menggunakan kod berikut:
fs := http.FileServer(http.Dir("server/webapps/play_maths")) http.Handle("/", fs) // Handles web pages at root path apiRoutes := UserRoutes() // Initialize API routes as a handler http.Handle("/api", apiRoutes.ServeHTTP) // Handles API routes
Fungsi UserRoutes mencipta sub-router untuk laluan API. Secara lalai, sub-router mewarisi awalan penghala induk, tetapi anda boleh mengatasi tingkah laku ini menggunakan kaedah PathPrefix. Penghala kemudian digunakan sebagai pengendali untuk laluan API kami.
Dengan mendaftarkan pengendali halaman web sebelum pengendali laluan API, memastikan pengendali halaman web mempunyai corak yang lebih pendek, kami mengeksploitasi fakta bahawa corak yang lebih panjang diutamakan. Akibatnya, permintaan yang bermula dengan /api akan dikendalikan oleh pengendali laluan API, manakala semua permintaan lain (termasuk yang ke laluan akar) akan dikendalikan oleh pengendali halaman web.
Pendekatan ini menyediakan cara yang fleksibel untuk mengendalikan pelbagai jenis permintaan HTTP pada pelayan yang sama tanpa perlu menjalankan berbilang proses atau menggunakan proksi terbalik.
Atas ialah kandungan terperinci Bagaimana untuk Melayan Halaman Web dan Laluan API pada Port yang Sama dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!