1
0
mirror of https://github.com/labstack/echo.git synced 2025-01-10 00:28:23 +02:00
echo/website/content/guide/request.md
Antonio Pagano 966839dfea Updating guides to according to V3 Codebase (#691)
* [doc] adding graceful documentation and example.

* adding myself to the maintainers list and minor comment formatting change

* [doc] updating code on the guides/context.md and guides/cookies.md to use v3 code.

* [doc] updating error-handling and request to v3 codebase

* [doc] updating templates documentation
2016-10-25 16:56:12 -07:00

97 lines
1.7 KiB
Markdown

+++
title = "HTTP Request"
description = "Handling HTTP request in Echo"
[menu.side]
name = "Request"
parent = "guide"
weight = 6
+++
## Request
### Bind Request Body
To bind request body into a provided Go type use `Context#Bind(interface{})`.
The default binder supports decoding application/json, application/xml and
application/x-www-form-urlencoded payload based on Context-Type header.
*Example*
TODO
> Custom binder can be registered via `Echo#SetBinder(Binder)`
### Query Parameter
Query parameter can be retrieved by name using `Context#QueryParam(name string)`.
*Example*
```go
e.GET("/users", func(c echo.Context) error {
name := c.QueryParam("name")
return c.String(http.StatusOK, name)
})
```
```sh
$ curl -G -d "name=joe" http://localhost:1323/users
```
### Form Parameter
Form parameter can be retrieved by name using `Context#FormValue(name string)`.
*Example*
```go
e.POST("/users", func(c echo.Context) error {
name := c.FormValue("name")
return c.String(http.StatusOK, name)
})
```
```sh
$ curl -d "name=joe" http://localhost:1323/users
```
### Path Parameter
Registered path parameter can be retrieved by name `Context#Param(name string) string`.
*Example*
```go
e.GET("/users/:name", func(c echo.Context) error {
// By name
name := c.Param("name")
return c.String(http.StatusOK, name)
})
```
```sh
$ curl http://localhost:1323/users/joe
```
### Handler Path
`Context#Path()` returns the registered path for the handler, it can be used in the
middleware for logging purpose.
*Example*
```go
e.Use(func(handler echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
println(c.Path())
return handler(c)
}
})
e.GET("/users/:name", func(c echo.Context) error) {
return c.String(http.StatusOK, name)
})
```