Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengembalikan "Halaman 404 Tidak Ditemui" di Golang apabila saya menghantar permintaan "GET".

Mengembalikan "Halaman 404 Tidak Ditemui" di Golang apabila saya menghantar permintaan "GET".

WBOY
WBOYke hadapan
2024-02-12 22:54:08890semak imbas

当我发送“GET”请求时,在 Golang 中返回“404 页面未找到”

Apabila memperkenalkan pemprosesan permintaan di Golang, editor PHP Baicao menekankan masalah tidak ditemui halaman 404 yang mungkin dihadapi semasa menghantar permintaan GET. Golang, sebagai bahasa pengaturcaraan yang cekap dan berkuasa, boleh menyelesaikan masalah ini melalui pemprosesan yang sesuai untuk memastikan pengguna mendapat respons yang betul. Apabila menulis kod, anda perlu memberi perhatian untuk menggunakan mekanisme pengendalian ralat yang sesuai, serta konfigurasi laluan dan laluan yang betul untuk mengelakkan berlakunya ralat 404. Dengan cara ini, pengguna boleh menikmati pengalaman menyemak imbas web yang lebih baik.

Isi soalan

Saya baru kenal golang. Saya cuba menulis pelayan api menggunakan golang tanpa menggunakan sebarang kerangka http (echo, gin, dll.). Saya menulis titik akhir "siaran" tetapi titik akhir "dapat" saya tidak bertindak balas. Saya cuba menulis titik akhir get lain yang dipanggil "ping" dan ia berfungsi. Rambut kerinting saya

curl --location 'http://localhost:8080/users/45254424-5be1-487d-9131-bad3b2f7791c'

Penangan saya

func (u userhandler) getbyid(writer http.responsewriter, request *http.request) {
    id := strings.trimprefix(request.url.path, "/users/")
    user := u.userservice.getbyid(uuid.must(uuid.parse(id)))
    writer.header().set("content-type", "application/json")
    json.newencoder(writer).encode(user)
}

Kaedah utama saya

postgresConnection := db.NewDb()
userRepository := repository.NewUserRepository(postgresConnection)
userService := service.NewUserService(userRepository)
userHandler := handlers.NewUserHandler(userService)

mux := http.NewServeMux()
mux.HandleFunc("/users", func(writer http.ResponseWriter, request *http.Request) {
    if request.Method == "POST" {
        userHandler.Create(writer, request)
    } else {
        http.Error(writer, "Invalid request method", http.StatusMethodNotAllowed)
    }
})
mux.HandleFunc("/users/:id", func(writer http.ResponseWriter, request *http.Request) {
    if request.Method == "GET" {
        userHandler.GetById(writer, request)
    } else {
        http.Error(writer, "Invalid request method", http.StatusMethodNotAllowed)
    }
})
mux.HandleFunc("/ping", PingHandler)

err := http.ListenAndServe(":8080", mux)
log.Fatal(err)

Penyelesaian

  • Apabila mendaftar pengendali, lulus parameter mod /users/:id 更改为 /users/.
mux.HandleFunc("/users/", func(writer http.ResponseWriter, request *http.Request) {
     id := strings.TrimPrefix(request.URL.Path, "/users/")

     ...
})

NOTA: Terdapat banyak perpustakaan pihak ketiga yang boleh membantu anda menulis pelayan http yang lebih mudah dibaca dan cekap.

Contoh

Atas ialah kandungan terperinci Mengembalikan "Halaman 404 Tidak Ditemui" di Golang apabila saya menghantar permintaan "GET".. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam