2018-01-25 18:26:21 +01:00
< a href = "https://echo.labstack.com" > < img height = "80" src = "https://cdn.labstack.com/images/echo-logo.svg" > < / a >
2017-06-07 11:10:09 -07:00
2017-06-18 22:35:02 -07:00
[![Sourcegraph ](https://sourcegraph.com/github.com/labstack/echo/-/badge.svg?style=flat-square )](https://sourcegraph.com/github.com/labstack/echo?badge)
2020-09-12 10:47:03 +02:00
[![GoDoc ](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square )](https://pkg.go.dev/github.com/labstack/echo/v4)
2017-06-18 22:35:02 -07:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/labstack/echo?style=flat-square )](https://goreportcard.com/report/github.com/labstack/echo)
[![Build Status ](http://img.shields.io/travis/labstack/echo.svg?style=flat-square )](https://travis-ci.org/labstack/echo)
2019-01-30 12:56:56 +02:00
[![Codecov ](https://img.shields.io/codecov/c/github/labstack/echo.svg?style=flat-square )](https://codecov.io/gh/labstack/echo)
2018-02-05 22:41:57 -08:00
[![Join the chat at https://gitter.im/labstack/echo ](https://img.shields.io/badge/gitter-join%20chat-brightgreen.svg?style=flat-square )](https://gitter.im/labstack/echo)
2021-01-03 11:09:17 -08:00
[![Forum ](https://img.shields.io/badge/community-forum-00afd1.svg?style=flat-square )](https://github.com/labstack/echo/discussions)
2017-06-18 22:35:02 -07:00
[![Twitter ](https://img.shields.io/badge/twitter-@labstack-55acee.svg?style=flat-square )](https://twitter.com/labstack)
[![License ](http://img.shields.io/badge/license-mit-blue.svg?style=flat-square )](https://raw.githubusercontent.com/labstack/echo/master/LICENSE)
2015-06-30 12:10:35 -07:00
2019-01-30 12:56:56 +02:00
## Supported Go versions
As of version 4.0.0, Echo is available as a [Go module ](https://github.com/golang/go/wiki/Modules ).
Therefore a Go version capable of understanding /vN suffixed imports is required:
- 1.9.7+
- 1.10.3+
2020-08-27 20:04:53 -07:00
- 1.14+
2019-01-30 12:56:56 +02:00
Any of these versions will allow you to import Echo as `github.com/labstack/echo/v4` which is the recommended
way of using Echo going forward.
For older versions, please use the latest v3 tag.
2016-06-07 20:24:24 -07:00
## Feature Overview
2016-03-10 22:22:42 -08:00
2016-09-06 19:41:05 -07:00
- Optimized HTTP router which smartly prioritize routes
- Build robust and scalable RESTful APIs
- Group APIs
- Extensible middleware framework
- Define middleware at root, group or route level
- Data binding for JSON, XML and form payload
- Handy functions to send variety of HTTP responses
- Centralized HTTP error handling
- Template rendering with any template engine
- Define your format for the logger
- Highly customizable
2016-11-12 17:26:15 -08:00
- Automatic TLS via Let’s Encrypt
2016-11-25 13:03:03 -08:00
- HTTP/2 support
2016-03-10 22:22:42 -08:00
2018-03-15 00:54:56 -07:00
## Benchmarks
2016-03-10 22:22:42 -08:00
2020-11-12 00:03:58 -03:00
Date: 2020/11/11< br >
2018-03-15 00:59:32 -07:00
Source: https://github.com/vishr/web-framework-benchmark< br >
2018-03-15 07:01:18 -07:00
Lower is better!
2018-03-15 00:56:47 -07:00
2020-11-12 00:03:58 -03:00
< img src = "https://i.imgur.com/qwPNQbl.png" >
< img src = "https://i.imgur.com/s8yKQjx.png" >
2018-03-15 00:54:56 -07:00
2020-11-23 00:31:00 -03:00
The benchmarks above were run on an Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
2018-01-29 20:02:11 -08:00
## [Guide](https://echo.labstack.com/guide)
2016-03-29 13:53:40 -07:00
2020-01-29 08:53:29 +05:30
### Installation
2020-07-01 09:38:30 +05:30
```sh
2020-01-29 08:53:29 +05:30
// go get github.com/labstack/echo/{version}
go get github.com/labstack/echo/v4
```
2018-01-29 20:38:18 -08:00
### Example
2018-01-29 23:00:48 -05:00
2018-01-29 20:02:11 -08:00
```go
2018-01-29 23:00:48 -05:00
package main
import (
2019-05-14 13:17:08 -04:00
"net/http"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
2018-01-29 23:00:48 -05:00
)
func main() {
2019-05-14 13:17:08 -04:00
// Echo instance
e := echo.New()
2018-01-29 20:02:11 -08:00
2019-05-14 13:17:08 -04:00
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
2018-01-29 20:02:11 -08:00
2019-05-14 13:17:08 -04:00
// Routes
e.GET("/", hello)
2018-01-29 20:02:11 -08:00
2019-05-14 13:17:08 -04:00
// Start server
e.Logger.Fatal(e.Start(":1323"))
2018-01-29 23:00:48 -05:00
}
// Handler
func hello(c echo.Context) error {
2019-05-14 13:17:08 -04:00
return c.String(http.StatusOK, "Hello, World!")
2018-01-29 23:00:48 -05:00
}
```
2018-02-10 13:37:12 -08:00
## Help
2016-03-29 13:53:40 -07:00
2021-01-03 11:09:17 -08:00
- [Forum ](https://github.com/labstack/echo/discussions )
2018-02-10 13:37:12 -08:00
- [Chat ](https://gitter.im/labstack/echo )
2016-03-29 13:53:40 -07:00
2015-04-25 16:10:28 -07:00
## Contribute
**Use issues for everything**
2015-04-26 22:41:41 -07:00
2016-12-15 18:44:06 -08:00
- For a small change, just send a PR.
- For bigger changes open an issue for discussion before sending a PR.
- PR should have:
- Test case
- Documentation
2017-01-10 08:45:44 -08:00
- Example (If it makes sense)
2016-12-15 18:44:06 -08:00
- You can also contribute by:
- Reporting issues
- Suggesting new features or enhancements
- Improve/fix documentation
2015-04-25 16:10:28 -07:00
## Credits
2019-01-30 12:56:56 +02:00
2015-04-25 16:10:28 -07:00
- [Vishal Rana ](https://github.com/vishr ) - Author
- [Nitin Rana ](https://github.com/nr17 ) - Consultant
- [Contributors ](https://github.com/labstack/echo/graphs/contributors )
2016-03-10 22:22:42 -08:00
## License
[MIT ](https://github.com/labstack/echo/blob/master/LICENSE )