Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Melaksanakan Halaman Ralat 404 Tersuai dalam Pakej HTTP Standard Go?

Bagaimana untuk Melaksanakan Halaman Ralat 404 Tersuai dalam Pakej HTTP Standard Go?

Barbara Streisand
Lepaskan: 2024-12-28 08:59:17
asal
884 orang telah melayarinya

How to Implement a Custom 404 Error Page in Go's Standard HTTP Package?

Menunjukkan Halaman Ralat 404 Tersuai dengan Pakej HTTP Standard

Pelayan HTTP biasanya memaparkan mesej ralat asas "halaman 404 tidak ditemui" apabila pengguna meminta URL yang tidak wujud . Untuk memberikan pengalaman yang lebih bermaklumat atau tersuai, anda perlu melaksanakan pengendali halaman ralat tersuai.

Dalam pakej HTTP standard untuk Go, terdapat mekanisme untuk mengendalikan semua permintaan yang tidak dikendalikan dan memaparkan halaman ralat tersuai . Mari kita mendalami cara untuk mencapai ini:

Fungsi Pengendali Ralat Tersuai

Buat fungsi untuk mengendalikan halaman ralat tersuai. Fungsi ini memerlukan tiga hujah:

  • w (http.ResponseWriter): Penulis respons digunakan untuk menghantar halaman ralat tersuai.
  • r (*http.Request): Minta objek untuk yang tidak wujud URL.
  • status (int): Kod status ralat (biasanya http.StatusNotFound).
func errorHandler(w http.ResponseWriter, r *http.Request, status int) {
    // Set the HTTP status code.
    w.WriteHeader(status)
    // Customize the error response for specific status codes.
    if status == http.StatusNotFound {
        fmt.Fprint(w, "Custom 404 error message")
    }
}
Salin selepas log masuk

Menetapkan Ralat Tersuai Pengendali

Fungsi pengendali ralat perlu dipautkan ke pelayan HTTP. Ini dilakukan dalam fungsi http.ListenAndServe, yang memulakan pelayan pada port yang ditentukan.

http.ListenAndServe(":12345", nil)
Salin selepas log masuk

Ganti nil dengan pengendali permintaan HTTP tersuai yang mengendalikan semua permintaan.

http.ListenAndServe(":12345", new(http.ServeMux))
Salin selepas log masuk

Dalam ServeMux, tambahkan pengendali laluan asal untuk URL tertentu.

mux := http.NewServeMux()
mux.HandleFunc("/smth/", smthHandler)
mux.HandleFunc("/", homeHandler)

http.ListenAndServe(":12345", mux)
Salin selepas log masuk

Akhir sekali, tambahkan NotFoundHandler kepada ServeMux untuk mengendalikan semua URL lain yang tidak dikendalikan oleh pengendali laluan tertentu.

mux.NotFoundHandler = http.HandlerFunc(errorHandler)
Salin selepas log masuk

Kod Contoh

Kod contoh lengkap yang melaksanakan pendekatan di atas ialah seperti berikut:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    mux := http.NewServeMux()
    mux.HandleFunc("/smth/", smthHandler)
    mux.HandleFunc("/", homeHandler)
    mux.NotFoundHandler = http.HandlerFunc(errorHandler)

    http.ListenAndServe(":12345", mux)
}

func smthHandler(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/smth/" {
        errorHandler(w, r, http.StatusNotFound)
        return
    }
    fmt.Fprint(w, "Welcome to smth")
}

func homeHandler(w http.ResponseWriter, r *http.Request) {
    if r.URL.Path != "/" {
        errorHandler(w, r, http.StatusNotFound)
        return
    }
    fmt.Fprint(w, "Welcome home")
}

func errorHandler(w http.ResponseWriter, r *http.Request, status int) {
    w.WriteHeader(status)
    if status == http.StatusNotFound {
        fmt.Fprint(w, "Custom 404 error message")
    }
}
Salin selepas log masuk

Kod ini mentakrifkan pengendali laluan untuk URL tertentu (/smth/ dan /) dan memberikan fungsi pengendali ralat tersuai (errorHandler) untuk mengendalikan semua permintaan lain yang tidak dikendalikan. Apabila pengguna cuba mengakses URL yang tidak wujud, halaman ralat 404 tersuai akan dipaparkan dan bukannya mesej lalai "halaman 404 tidak ditemui".

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Halaman Ralat 404 Tersuai dalam Pakej HTTP Standard Go?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan