# Handling Requests in Echo!

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1680357879166/abdb5ce6-76cc-4907-a135-80526556e9f4.png align="center")

a. Routing and URL parameters

b. Query parameters and form data

c. Middleware and HTTP context

Echo is a popular web framework for building web applications in Go. In the previous article, we introduced Echo and learned how to set up a basic project structure. In this article, we will focus on handling requests in Echo.

### Routing and URL Parameters

Routing is the process of mapping HTTP requests to the appropriate handler function based on the URL path and HTTP method. In Echo, routing is done using the `Echo` object's `Router` method. Here's an example:

```go
package main

import (
	"net/http"

	"github.com/labstack/echo"
)

func main() {
	e := echo.New()

	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World!")
	})

	e.GET("/users/:id", func(c echo.Context) error {
		id := c.Param("id")
		return c.String(http.StatusOK, "User ID: "+id)
	})

	e.Start(":8080")
}
```

In this example, we defined two routes: `/` and `/users/:id`. The first route maps to a handler function that returns a simple string. The second route maps to a handler function that extracts the `id` parameter from the URL using the `Param` method of the `echo.Context` object.

### Query Parameters and Form Data

Query parameters and form data are commonly used in web applications to send data from the client to the server. In Echo, query parameters and form data can be accessed using the `QueryParam` and `FormValue` methods of the `echo.Context` object, respectively.

Here's an example:

```go
package main

import (
	"net/http"

	"github.com/labstack/echo"
)

func main() {
	e := echo.New()

	e.GET("/books", func(c echo.Context) error {
		author := c.QueryParam("author")
		title := c.FormValue("title")
		return c.String(http.StatusOK, "Author: "+author+", Title: "+title)
	})

	e.Start(":8080")
}
```

In this example, we defined a route `/books` that expects an `author` query parameter and a `title` form value. The `QueryParam` and `FormValue` methods are used to extract these values from the request.

### Middleware and HTTP Context

Middleware is a powerful feature in Echo that allows you to modify the HTTP request and response objects before and after they are processed by the handler functions. Middleware functions are defined using the `echo.MiddlewareFunc` type, and can be added to the request chain using the `Use` method of the `Echo` object.

Here's an example:

```go
package main

import (
	"net/http"

	"github.com/labstack/echo"
	"github.com/labstack/echo/middleware"
)

func main() {
	e := echo.New()

	e.Use(middleware.Logger())

	e.GET("/", func(c echo.Context) error {
		return c.String(http.StatusOK, "Hello, World!")
	})

	e.Start(":8080")
}
```

In this example, we defined a logger middleware function using the `middleware.Logger` function provided by Echo. This middleware function is added to the request chain using the `Use` method of the `Echo` object. The `Logger` function will log information about each request, such as the HTTP method, URL path, and response status code.

### Conclusion

In this article, we learned how to handle requests in Echo by defining routes, accessing query parameters and form data, and using middleware functions. Echo provides a simple and elegant API for handling HTTP requests, and its middleware support makes it a powerful tool for building web applications in Go.

I hope this helps, you!!

**More such articles:**

[https://medium.com/techwasti](Link)

[https://www.youtube.com/channel/UCiTaHm1AYqMS4F4L9zyO7qA](Link)

[https://www.techwasti.com/](Link)

\==========================\*\*=========================

**If this article adds any value to you then please clap and comment.**

**Let’s connect on** [**Stackoverflow**](http://stackoverflow.com/users/3187349/maheshwar-ligade)**,** [**LinkedIn**](https://in.linkedin.com/in/maheshwar-ligade-14447841)**, &** [**Twitter**](https://twitter.com/MaheshwarLigade)**.**
