Maison >développement back-end >Golang >Renvoyer '404 Page Not Found' dans Golang lorsque j'envoie une requête 'GET'

Renvoyer '404 Page Not Found' dans Golang lorsque j'envoie une requête 'GET'

WBOY
WBOYavant
2024-02-12 22:54:08917parcourir

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

Lors de l'introduction du traitement des requêtes dans Golang, l'éditeur PHP Baicao a souligné le problème de page 404 non trouvée qui peut être rencontré lors de l'envoi d'une requête GET. Golang, en tant que langage de programmation efficace et puissant, peut résoudre ce problème grâce à un traitement approprié pour garantir que les utilisateurs peuvent obtenir la bonne réponse. Lors de l'écriture du code, vous devez faire attention à l'utilisation de mécanismes de gestion des erreurs appropriés, ainsi qu'à la configuration correcte du chemin et du routage pour éviter les erreurs 404. De cette manière, les utilisateurs peuvent profiter d’une meilleure expérience de navigation sur le Web.

Contenu des questions

Je suis nouveau sur Golang. J'essaie d'écrire un serveur API en utilisant Golang sans utiliser de framework http (echo, gin, etc.). J'ai écrit le point de terminaison "post" mais mon point de terminaison "get" ne répond pas. J'ai essayé d'écrire un autre point de terminaison appelé "ping" et cela fonctionne. Mes cheveux bouclés

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

Mon gestionnaire

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

Ma méthode principale

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)

Solution

  • Lors de l'enregistrement du gestionnaire, transmettez le paramètre mode /users/:id 更改为 /users/.
mux.HandleFunc("/users/", func(writer http.ResponseWriter, request *http.Request) {
     id := strings.TrimPrefix(request.URL.Path, "/users/")

     ...
})

REMARQUE : Il existe de nombreuses bibliothèques tierces qui peuvent vous aider à écrire des serveurs http plus lisibles et plus efficaces.

Exemple

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer