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
Libérer: 2024-02-12 22:54:08
avant
938 Les gens l'ont consulté

当我发送“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'
Copier après la connexion

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)
}
Copier après la connexion

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)
Copier après la connexion

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

     ...
})
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal