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

WBOY
Lepaskan: 2024-02-12 22:54:08
ke hadapan
911 orang telah melayarinya

当我发送“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'
Salin selepas log masuk

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)
}
Salin selepas log masuk

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)
Salin selepas log masuk

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/")

     ...
})
Salin selepas log masuk

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!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan