Logo

Developer learning path

Go

Routing in Go

Routing in Go

11

#description

Routing is an important topic in web development, and it ensures that incoming web requests are directed to the correct handler functions in the application. In Go, routing is typically done using a router package that defines the routes and maps them to corresponding handler functions.

There are several popular routing packages available for Go, including Gorilla Mux, httprouter, and chi. Go's built-in "net/http" package also provides a basic routing capability that can be used for simpler applications.

To use a router package, you typically start by creating a new router object and defining the routes that your application will handle.

For example, you might define a route for handling GET requests to the "/users" endpoint:

                    
router := mux.NewRouter()
router.HandleFunc("/users", getUsers).Methods("GET")
                  

In this example, we're using Gorilla Mux to create a new router object and then defining a route for handling GET requests to the "/users" endpoint. The getUsers function is the handler function that will be called when a matching request is received.

Handler functions in Go take two arguments: a ResponseWriter and a Request. The ResponseWriter is used to write the response back to the client, and the Request contains information about the incoming request, such as headers and query parameters.

Once you've defined your routes and handler functions, you need to start your server and tell it to listen on a specific port. This is typically done using the http.ListenAndServe() function.

Here's an example of starting a server on port 8080:

                    
http.ListenAndServe(":8080", router)
                  

In this example, we're telling the http package to listen on port 8080 and to use our mux router to handle incoming requests.

Overall, routing in Go involves creating a router object, defining routes and their corresponding handlers, and then starting a server to listen for incoming requests. There are several popular router packages available that make this process easier, and the built-in "net/http" package also provides basic routing functionality.

March 27, 2023

If you don't quite understand a paragraph in the lecture, just click on it and you can ask questions about it.

If you don't understand the whole question, click on the buttons below to get a new version of the explanation, practical examples, or to critique the question itself.