mirror of
https://github.com/labstack/echo.git
synced 2024-12-16 10:29:24 +02:00
159 lines
9.2 KiB
Markdown
159 lines
9.2 KiB
Markdown
[![Sourcegraph](https://sourcegraph.com/github.com/labstack/echo/-/badge.svg?style=flat-square)](https://sourcegraph.com/github.com/labstack/echo?badge)
|
|
[![GoDoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://pkg.go.dev/github.com/labstack/echo/v4)
|
|
[![Go Report Card](https://goreportcard.com/badge/github.com/labstack/echo?style=flat-square)](https://goreportcard.com/report/github.com/labstack/echo)
|
|
[![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)
|
|
[![Codecov](https://img.shields.io/codecov/c/github/labstack/echo.svg?style=flat-square)](https://codecov.io/gh/labstack/echo)
|
|
[![Forum](https://img.shields.io/badge/community-forum-00afd1.svg?style=flat-square)](https://github.com/labstack/echo/discussions)
|
|
[![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)
|
|
|
|
## Echo
|
|
|
|
High performance, extensible, minimalist Go web framework.
|
|
|
|
* [Official website](https://echo.labstack.com)
|
|
* [Quick start](https://echo.labstack.com/docs/quick-start)
|
|
* [Middlewares](https://echo.labstack.com/docs/category/middleware)
|
|
|
|
Help and questions: [Github Discussions](https://github.com/labstack/echo/discussions)
|
|
|
|
|
|
### Feature Overview
|
|
|
|
- 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
|
|
- Automatic TLS via Let’s Encrypt
|
|
- HTTP/2 support
|
|
|
|
## 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.
|
|
|
|
## Benchmarks
|
|
|
|
Date: 2020/11/11<br>
|
|
Source: https://github.com/vishr/web-framework-benchmark<br>
|
|
Lower is better!
|
|
|
|
<img src="https://i.imgur.com/qwPNQbl.png">
|
|
<img src="https://i.imgur.com/s8yKQjx.png">
|
|
|
|
The benchmarks above were run on an Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
|
|
|
|
## [Guide](https://echo.labstack.com/guide)
|
|
|
|
### Installation
|
|
|
|
```sh
|
|
// go get github.com/labstack/echo/{version}
|
|
go get github.com/labstack/echo/v4
|
|
```
|
|
Latest version of Echo supports last four Go major [releases](https://go.dev/doc/devel/release) and might work with older versions.
|
|
|
|
### Example
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"github.com/labstack/echo/v4"
|
|
"github.com/labstack/echo/v4/middleware"
|
|
"log/slog"
|
|
"net/http"
|
|
)
|
|
|
|
func main() {
|
|
// Echo instance
|
|
e := echo.New()
|
|
|
|
// Middleware
|
|
e.Use(middleware.Logger())
|
|
e.Use(middleware.Recover())
|
|
|
|
// Routes
|
|
e.GET("/", hello)
|
|
|
|
// Start server
|
|
if err := e.Start(":8080"); err != nil && !errors.Is(err, http.ErrServerClosed) {
|
|
slog.Error("failed to start server", "error", err)
|
|
}
|
|
}
|
|
|
|
// Handler
|
|
func hello(c echo.Context) error {
|
|
return c.String(http.StatusOK, "Hello, World!")
|
|
}
|
|
```
|
|
|
|
# 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 |
|
|
| [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 |
|
|
|
|
# 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. |
|
|
| [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. |
|
|
| [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 |
|
|
|
|
Please send a PR to add your own library here.
|
|
|
|
## Contribute
|
|
|
|
**Use issues for everything**
|
|
|
|
- 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
|
|
- Example (If it makes sense)
|
|
- You can also contribute by:
|
|
- Reporting issues
|
|
- Suggesting new features or enhancements
|
|
- Improve/fix documentation
|
|
|
|
## Credits
|
|
|
|
- [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)
|
|
- [Contributors](https://github.com/labstack/echo/graphs/contributors)
|
|
|
|
## License
|
|
|
|
[MIT](https://github.com/labstack/echo/blob/master/LICENSE)
|