Home >Backend Development >Golang >Returning '404 Page Not Found' in Golang when I send a 'GET' request

Returning '404 Page Not Found' in Golang when I send a 'GET' request

WBOY
WBOYforward
2024-02-12 22:54:08966browse

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

When php editor Baicao introduced request processing in Golang, he emphasized the 404 page not found problem that may be encountered when sending a GET request. Golang, as an efficient and powerful programming language, can solve this problem through appropriate processing to ensure that users can get the correct response. When writing code, you need to pay attention to using appropriate error handling mechanisms, as well as correct path and routing configuration to avoid 404 errors. In this way, users can enjoy a better web browsing experience.

Question content

I am new to golang. I try to write an api server using golang without using any http framework (echo, gin, etc.). I wrote the "post" endpoint but my "get" endpoint is not responding. I tried writing another get endpoint called "ping" and it is working. My curly hair

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

My handler

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

My main method

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

  • When registering the handler, change the mode parameter /users/:id to /users/.
mux.HandleFunc("/users/", func(writer http.ResponseWriter, request *http.Request) {
     id := strings.TrimPrefix(request.URL.Path, "/users/")

     ...
})

Note: There are many third-party libraries that can help you write more readable and efficient http servers.

Example

The above is the detailed content of Returning '404 Page Not Found' in Golang when I send a 'GET' request. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete