2017-06-19 07:35:02 +02: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-19 07:35:02 +02:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/labstack/echo?style=flat-square )](https://goreportcard.com/report/github.com/labstack/echo)
2023-07-18 18:20:05 +02:00
[![GitHub Workflow Status (with event) ](https://img.shields.io/github/actions/workflow/status/labstack/echo/echo.yml?style=flat-square )](https://github.com/labstack/echo/actions)
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)
2021-01-03 21:09:17 +02:00
[![Forum ](https://img.shields.io/badge/community-forum-00afd1.svg?style=flat-square )](https://github.com/labstack/echo/discussions)
2017-06-19 07:35:02 +02: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 21:10:35 +02:00
2024-01-24 17:45:40 +02:00
## Echo
2019-01-30 12:56:56 +02:00
2024-01-24 17:45:40 +02:00
High performance, extensible, minimalist Go web framework.
2022-10-05 05:36:12 +02:00
2024-01-24 17:45:40 +02:00
* [Official website ](https://echo.labstack.com )
* [Quick start ](https://echo.labstack.com/docs/quick-start )
* [Middlewares ](https://echo.labstack.com/docs/category/middleware )
2019-01-30 12:56:56 +02:00
2024-01-24 17:45:40 +02:00
Help and questions: [Github Discussions ](https://github.com/labstack/echo/discussions )
2019-01-30 12:56:56 +02:00
2024-01-24 17:45:40 +02:00
### Feature Overview
2016-03-11 08:22:42 +02:00
2016-09-07 04:41:05 +02: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-13 03:26:15 +02:00
- Automatic TLS via Let’s Encrypt
2016-11-25 23:03:03 +02:00
- HTTP/2 support
2016-03-11 08:22:42 +02:00
2024-01-23 05:26:05 +02:00
## Sponsors
< div >
< a href = "https://encore.dev" style = "display: inline-flex; align-items: center; gap: 10px" >
< img src = "https://user-images.githubusercontent.com/78424526/214602214-52e0483a-b5fc-4d4c-b03e-0b7b23e012df.svg" height = "28px" alt = "encore icon" > < / img >
< b > Encore – the platform for building Go-based cloud backends< / b >
< / a >
< / div >
< br / >
Click [here ](https://github.com/sponsors/labstack ) for more information on sponsorship.
2018-03-15 09:54:56 +02:00
## Benchmarks
2016-03-11 08:22:42 +02:00
2020-11-12 05:03:58 +02:00
Date: 2020/11/11< br >
2018-03-15 09:59:32 +02:00
Source: https://github.com/vishr/web-framework-benchmark< br >
2018-03-15 16:01:18 +02:00
Lower is better!
2018-03-15 09:56:47 +02:00
2020-11-12 05:03:58 +02:00
< img src = "https://i.imgur.com/qwPNQbl.png" >
< img src = "https://i.imgur.com/s8yKQjx.png" >
2018-03-15 09:54:56 +02:00
2020-11-23 05:31:00 +02:00
The benchmarks above were run on an Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
2018-01-30 06:02:11 +02:00
## [Guide](https://echo.labstack.com/guide)
2016-03-29 22:53:40 +02:00
2020-01-29 05:23:29 +02:00
### Installation
2020-07-01 06:08:30 +02:00
```sh
2020-01-29 05:23:29 +02:00
// go get github.com/labstack/echo/{version}
go get github.com/labstack/echo/v4
```
2024-01-24 17:45:40 +02:00
Latest version of Echo supports last four Go major [releases ](https://go.dev/doc/devel/release ) and might work with older versions.
2020-01-29 05:23:29 +02:00
2018-01-30 06:38:18 +02:00
### Example
2018-01-30 06:00:48 +02:00
2018-01-30 06:02:11 +02:00
```go
2018-01-30 06:00:48 +02:00
package main
import (
2019-05-14 19:17:08 +02:00
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
2024-11-22 21:45:51 +02:00
"log/slog"
2021-10-12 06:49:20 +02:00
"net/http"
2018-01-30 06:00:48 +02:00
)
func main() {
2019-05-14 19:17:08 +02:00
// Echo instance
e := echo.New()
2018-01-30 06:02:11 +02:00
2019-05-14 19:17:08 +02:00
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
2018-01-30 06:02:11 +02:00
2019-05-14 19:17:08 +02:00
// Routes
e.GET("/", hello)
2018-01-30 06:02:11 +02:00
2019-05-14 19:17:08 +02:00
// Start server
2024-11-22 21:45:51 +02:00
if err := e.Start(":8080"); err != nil & & !errors.Is(err, http.ErrServerClosed) {
slog.Error("failed to start server", "error", err)
}
2018-01-30 06:00:48 +02:00
}
// Handler
func hello(c echo.Context) error {
2019-05-14 19:17:08 +02:00
return c.String(http.StatusOK, "Hello, World!")
2018-01-30 06:00:48 +02:00
}
```
2023-01-02 21:39:15 +02:00
# Official middleware repositories
Following list of middleware is maintained by Echo team.
| Repository | Description |
|------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [github.com/labstack/echo-jwt ](https://github.com/labstack/echo-jwt ) | [JWT ](https://github.com/golang-jwt/jwt ) middleware |
2023-02-07 22:59:38 +02:00
| [github.com/labstack/echo-contrib ](https://github.com/labstack/echo-contrib ) | [casbin ](https://github.com/casbin/casbin ), [gorilla/sessions ](https://github.com/gorilla/sessions ), [jaegertracing ](https://github.com/uber/jaeger-client-go ), [prometheus ](https://github.com/prometheus/client_golang/ ), [pprof ](https://pkg.go.dev/net/http/pprof ), [zipkin ](https://github.com/openzipkin/zipkin-go ) middlewares |
2023-01-02 21:39:15 +02:00
# Third-party middleware repositories
Be careful when adding 3rd party middleware. Echo teams does not have time or manpower to guarantee safety and quality
of middlewares in this list.
| Repository | Description |
|------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [deepmap/oapi-codegen ](https://github.com/deepmap/oapi-codegen ) | Automatically generate RESTful API documentation with [OpenAPI ](https://swagger.io/specification/ ) Client and Server Code Generator |
| [github.com/swaggo/echo-swagger ](https://github.com/swaggo/echo-swagger ) | Automatically generate RESTful API documentation with [Swagger ](https://swagger.io/ ) 2.0. |
| [github.com/ziflex/lecho ](https://github.com/ziflex/lecho ) | [Zerolog ](https://github.com/rs/zerolog ) logging library wrapper for Echo logger interface. |
| [github.com/brpaz/echozap ](https://github.com/brpaz/echozap ) | Uber´s [Zap ](https://github.com/uber-go/zap ) logging library wrapper for Echo logger interface. |
2023-04-30 22:39:52 +02:00
| [github.com/samber/slog-echo ](https://github.com/samber/slog-echo ) | Go [slog ](https://pkg.go.dev/golang.org/x/exp/slog ) logging library wrapper for Echo logger interface. |
2023-01-02 21:39:15 +02:00
| [github.com/darkweak/souin/plugins/echo ](https://github.com/darkweak/souin/tree/master/plugins/echo ) | HTTP cache system based on [Souin ](https://github.com/darkweak/souin ) to automatically get your endpoints cached. It supports some distributed and non-distributed storage systems depending your needs. |
| [github.com/mikestefanello/pagoda ](https://github.com/mikestefanello/pagoda ) | Rapid, easy full-stack web development starter kit built with Echo. |
| [github.com/go-woo/protoc-gen-echo ](https://github.com/go-woo/protoc-gen-echo ) | ProtoBuf generate Echo server side code |
2022-01-09 02:41:40 +02:00
Please send a PR to add your own library here.
2015-04-26 01:10:28 +02:00
## Contribute
**Use issues for everything**
2015-04-27 07:41:41 +02:00
2016-12-16 04:44:06 +02: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 18:45:44 +02:00
- Example (If it makes sense)
2016-12-16 04:44:06 +02:00
- You can also contribute by:
- Reporting issues
- Suggesting new features or enhancements
- Improve/fix documentation
2015-04-26 01:10:28 +02:00
## Credits
2019-01-30 12:56:56 +02:00
2021-08-15 18:42:15 +02:00
- [Vishal Rana ](https://github.com/vishr ) (Author)
- [Nitin Rana ](https://github.com/nr17 ) (Consultant)
- [Roland Lammel ](https://github.com/lammel ) (Maintainer)
- [Martti T. ](https://github.com/aldas ) (Maintainer)
- [Pablo Andres Fuente ](https://github.com/pafuent ) (Maintainer)
2021-08-15 19:44:14 +02:00
- [Contributors ](https://github.com/labstack/echo/graphs/contributors )
2016-03-11 08:22:42 +02:00
## License
[MIT ](https://github.com/labstack/echo/blob/master/LICENSE )