Dalam perisian tengah Rack untuk Ruby, memperoleh skema URL permintaan semasa adalah mudah menggunakan kaedah scheme#request. Walau bagaimanapun, dalam Go, medan http.Request.URL.Scheme mengembalikan rentetan kosong, membuatkan pembangun bingung.
Kunci untuk membuka kunci skema URL permintaan dalam Go terletak pada menyedari bahawa kedua-dua permintaan HTTP dan HTTPS mesti dikendalikan. Dengan menggunakan kedua-dua fungsi http.ListenAndServe() dan http.ListenAndServeTLS(), kami memenuhi kedua-dua protokol.
HTTPS, sebagai HTTP melalui TLS, menyediakan sifat TLS dalam *http.Permintaan yang mendedahkan maklumat tentang sambungan TLS. Dengan memeriksa sifat ini, kita boleh membezakan protokol yang digunakan:
<code class="go">func handler(w http.ResponseWriter, r *http.Request) { if r.TLS == nil { // the scheme was HTTP } else { // the scheme was HTTPS } } func main() { http.HandleFunc("/", handler) go func() { log.Fatal(http.ListenAndServeTLS(":8443", "localhost.crt", "localhost.key", nil)) }() log.Fatal(http.ListenAndServe(":8080", nil)) }</code>
Pendekatan ini memastikan bahawa permintaan dikendalikan dengan lancar tanpa mengira sama ada ia adalah HTTP atau HTTPS, menyediakan mekanisme yang boleh dipercayai untuk menentukan minta skim URL.
Atas ialah kandungan terperinci Bagaimana Anda Menentukan Skim URL Permintaan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!