Heim  >  Artikel  >  Backend-Entwicklung  >  In Golang wird „404-Seite nicht gefunden“ zurückgegeben, wenn ich eine „GET“-Anfrage sende

In Golang wird „404-Seite nicht gefunden“ zurückgegeben, wenn ich eine „GET“-Anfrage sende

WBOY
WBOYnach vorne
2024-02-12 22:54:08891Durchsuche

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

Bei der Einführung der Anforderungsverarbeitung in Golang betonte PHP-Redakteur Baicao das Problem „404-Seite nicht gefunden“, das beim Senden einer GET-Anfrage auftreten kann. Als effiziente und leistungsstarke Programmiersprache kann Golang dieses Problem durch geeignete Verarbeitung lösen, um sicherzustellen, dass Benutzer die richtige Antwort erhalten. Beim Schreiben von Code müssen Sie auf die Verwendung geeigneter Fehlerbehandlungsmechanismen sowie auf die korrekte Pfad- und Routing-Konfiguration achten, um das Auftreten von 404-Fehlern zu vermeiden. Auf diese Weise können Benutzer ein besseres Surferlebnis im Internet genießen.

Frageninhalt

Ich bin neu bei Golang. Ich versuche, einen API-Server mit Golang zu schreiben, ohne ein HTTP-Framework (Echo, Gin usw.) zu verwenden. Ich habe den „Post“-Endpunkt geschrieben, aber mein „Get“-Endpunkt antwortet nicht. Ich habe versucht, einen anderen Get-Endpunkt namens „ping“ zu schreiben, und es funktioniert. Meine lockigen Haare

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

Mein Betreuer

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)
}

Meine Hauptmethode

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)

Lösung

  • Übergeben Sie bei der Registrierung des Handlers den Modusparameter /users/:id 更改为 /users/.
mux.HandleFunc("/users/", func(writer http.ResponseWriter, request *http.Request) {
     id := strings.TrimPrefix(request.URL.Path, "/users/")

     ...
})

HINWEIS: Es gibt viele Bibliotheken von Drittanbietern, die Ihnen beim Schreiben besser lesbarer und effizienterer HTTP-Server helfen können.

Beispiel

Das obige ist der detaillierte Inhalt vonIn Golang wird „404-Seite nicht gefunden“ zurückgegeben, wenn ich eine „GET“-Anfrage sende. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen