Heim > Backend-Entwicklung > Golang > 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
Freigeben: 2024-02-12 22:54:08
nach vorne
938 Leute haben es durchsucht

当我发送“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'
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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

     ...
})
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage