Home > Backend Development > Golang > How to Handle 404 Errors with Custom Handlers in httprouter?

How to Handle 404 Errors with Custom Handlers in httprouter?

Mary-Kate Olsen
Release: 2024-10-28 03:47:30
Original
803 people have browsed it

How to Handle 404 Errors with Custom Handlers in httprouter?

Handling 404 Errors with httprouter's Custom Handlers

In an HTTP API built with httprouter, handling 404 (Not Found) errors requires a custom handler. The documentation mentions this possibility, but it doesn't provide explicit instructions on how to create one.

Setting Up a Custom Handler

To handle 404 errors manually, follow these steps:

  1. Define a function with the following signature:

    <code class="go">func(http.ResponseWriter, *http.Request)</code>
    Copy after login
  2. Convert the function into an http.Handler using the http.HandlerFunc() helper function.

    <code class="go">func MyNotFound(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "text/plain; charset=utf-8")
        w.WriteHeader(http.StatusNotFound) // StatusNotFound = 404
        w.Write([]byte("My own Not Found handler."))
    
        // or with more detailed message
        w.Write([]byte(" The page you requested could not be found."))
    }</code>
    Copy after login
  3. Assign the MyNotFound handler to the NotFound field of the httprouter:

    <code class="go">var router *httprouter.Router = ... // Your router value
    router.NotFound = http.HandlerFunc(MyNotFound)</code>
    Copy after login

Manually Invoking the Custom Handler

In your handlers, you can manually call the MyNotFound handler, if needed, by passing the ResponseWriter and *Request:

<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) {
    exists := ... // Find out if requested resource is valid and available
    if !exists {
        MyNotFound(w, r) // Pass ResponseWriter and Request
        // Or via the Router:
        // router.NotFound(w, r)
        return
    }
    // Resource exists, serve it
    // ...
}</code>
Copy after login

By implementing these steps, you can effectively handle 404 errors in your httprouter-based API and customize the behavior as needed.

The above is the detailed content of How to Handle 404 Errors with Custom Handlers in httprouter?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template