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

WBOY
Release: 2024-02-12 22:54:08
forward
911 people have browsed it

当我发送“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'
Copy after login

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)
}
Copy after login

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)
Copy after login

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

     ...
})
Copy after login

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!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template