DEV Community

luthfisauqi17
luthfisauqi17

Posted on

Handling URL Parameters in Golang with Chi Router

In web development, one of the most common tasks is retrieving dynamic data from a URL, such as a specific ID for a book, user, or product. If you are using the Chi router in Golang, this process is incredibly straightforward and idiomatic.

In this article, we’ll walk through how to capture and process URL parameters in your Go handlers.

1. Defining the Route with a Parameter

To start, you need to define a route that includes a placeholder for your parameter. In Chi, this is done using the {} syntax. For example, if you want to create an endpoint to fetch a book by its ID, your route would look like this:

r.Get("/books/{bookID}", handleGetBookByID)
Enter fullscreen mode Exit fullscreen mode

In this case, {bookID} acts as a dynamic identifier that can be replaced by any value (like 7, 10, or abc) when a user visits the URL.

2. Creating the Handler Function

Next, create the handler function to process the request. The signature remains the same as a standard HTTP handler:

func handleGetBookByID(w http.ResponseWriter, r *http.Request) {
    // Logic goes here
}
Enter fullscreen mode Exit fullscreen mode

3. Extracting the Parameter Value

This is where Chi makes things easy. To retrieve the value of {bookID} from the URL, you use the chi.URLParam function. This function takes the current request context and the name of the parameter you defined in your route.

func handleGetBookByID(w http.ResponseWriter, r *http.Request) {
    // Get the value of 'bookID' from the URL
    bookID := chi.URLParam(r, "bookID")

    // For demonstration, we'll just print it to the response
    fmt.Fprintf(w, "The Book ID is: %s", bookID)
}
Enter fullscreen mode Exit fullscreen mode

4. Testing the Endpoint

Once you run your application (using go run main.go), you can test it in your browser or via a tool like Postman:

  • URL: http://localhost:8080/books/10 Output: The Book ID is: 10
  • URL: http://localhost:8080/books/7 Output: The Book ID is: 7

The output will dynamically change based on whatever value you provide in the URL parameter spot.


Conclusion

Using chi.URLParam is an efficient and clean way to handle dynamic routing in your Golang backend. It allows you to build RESTful APIs that can easily identify and serve specific resources based on user input.

Happy coding!

Top comments (0)