1
0
mirror of https://github.com/labstack/echo.git synced 2024-12-24 20:14:31 +02:00
High performance, minimalist Go web framework https://echo.labstack.com/
Go to file
2022-08-09 14:47:09 +03:00
_fixture Fix Echo.Serve() will not serve on HTTP port correctly when there is already TLSListener set to Echo instance. (#1785) (#1793) 2021-02-28 19:13:04 +01:00
.github Update CI-flow (Go 1.19 +deps) 2022-08-07 06:53:31 +03:00
middleware Middlewares should use errors.As() instead of type assertion on HTTPError 2022-07-21 21:24:18 +03:00
.editorconfig updated docs 2016-11-16 21:26:56 -08:00
.gitattributes Updated website and examples 2017-01-17 10:47:16 -08:00
.gitignore adds middleware for rate limiting (#1724) 2021-01-15 17:53:15 -03:00
.travis.yml Update .travis.yml 2020-11-02 10:10:16 -05:00
bind_test.go feat: Bind data using headers as source (#1866) 2021-05-25 14:50:49 +02:00
bind.go Adding support for HEAD method query params binding (#2027) 2022-01-24 10:28:48 +01:00
binder_external_test.go Fluent Binder for Query/Path/Form binding (#1717) (#1736) 2021-01-08 00:43:38 +01:00
binder_go1.15_test.go Fluent Binder for Query/Path/Form binding (#1717) (#1736) 2021-01-08 00:43:38 +01:00
binder_test.go Add new value binding methods (UnixTimeMilli,TextUnmarshaler,JSONUnmarshaler) to ValueBinder 2022-03-17 14:14:42 +02:00
binder.go Tidy up comments for value binders 2022-03-17 14:14:42 +02:00
CHANGELOG.md Update version and changelog for 4.7.2 2022-03-16 09:34:26 +02:00
codecov.yml Adding Codecov configuration 2020-12-01 05:00:19 +00:00
context_fs_go1.16_test.go Improve filesystem support. 2022-01-24 15:55:16 +02:00
context_fs_go1.16.go improve comments 2022-01-24 15:55:16 +02:00
context_fs.go Improve filesystem support (Go 1.16+). Add field echo.Filesystem, methods: echo.FileFS, echo.StaticFS, group.FileFS, group.StaticFS. Following methods will use echo.Filesystem to server files: echo.File, echo.Static, group.File, group.Static, Context.File 2022-01-24 15:55:16 +02:00
context_test.go Split XFF header only by comma 2021-06-02 21:42:27 +03:00
context.go Improve filesystem support (Go 1.16+). Add field echo.Filesystem, methods: echo.FileFS, echo.StaticFS, group.FileFS, group.StaticFS. Following methods will use echo.Filesystem to server files: echo.File, echo.Static, group.File, group.Static, Context.File 2022-01-24 15:55:16 +02:00
echo_fs_go1.16_test.go Improve filesystem support. 2022-01-24 15:55:16 +02:00
echo_fs_go1.16.go Fix e.Static, .File(), c.Attachment() being picky with paths starting with ./, ../ and / after 4.7.0 introduced echo.Filesystem support (Go1.16+) (#2123) 2022-03-13 15:05:12 +02:00
echo_fs.go Improve filesystem support (Go 1.16+). Add field echo.Filesystem, methods: echo.FileFS, echo.StaticFS, group.FileFS, group.StaticFS. Following methods will use echo.Filesystem to server files: echo.File, echo.Static, group.File, group.Static, Context.File 2022-01-24 15:55:16 +02:00
echo_test.go Add support for registering handlers for 404 routes (#2217) 2022-07-12 21:53:41 +03:00
echo.go Add support for registering handlers for 404 routes (#2217) 2022-07-12 21:53:41 +03:00
go.mod Revert "Update direct golang deps" 2022-03-02 23:11:46 +01:00
go.sum Revert "Update direct golang deps" 2022-03-02 23:11:46 +01:00
group_fs_go1.16_test.go Improve filesystem support. 2022-01-24 15:55:16 +02:00
group_fs_go1.16.go Improve filesystem support. 2022-01-24 15:55:16 +02:00
group_fs.go Improve filesystem support (Go 1.16+). Add field echo.Filesystem, methods: echo.FileFS, echo.StaticFS, group.FileFS, group.StaticFS. Following methods will use echo.Filesystem to server files: echo.File, echo.Static, group.File, group.Static, Context.File 2022-01-24 15:55:16 +02:00
group_test.go Add support for registering handlers for 404 routes (#2217) 2022-07-12 21:53:41 +03:00
group.go Add support for registering handlers for 404 routes (#2217) 2022-07-12 21:53:41 +03:00
ip_test.go Bugfix/1834 Fix X-Real-IP bug (#2007) 2022-03-01 08:56:46 +01:00
ip.go Bugfix/1834 Fix X-Real-IP bug (#2007) 2022-03-01 08:56:46 +01:00
json_test.go Allow for custom JSON encoding implementations (#1880) 2021-07-05 22:33:19 +03:00
json.go Allow for custom JSON encoding implementations (#1880) 2021-07-05 22:33:19 +03:00
LICENSE Create LICENSE 2021-04-17 12:47:48 -07:00
log.go the logging interface add SetHeader method (#1092) 2018-09-28 10:47:23 -07:00
Makefile Update Github CI flow to use Go 1.18, bump actions versions 2022-04-29 22:34:24 +03:00
README.md add:README.md-Third-party middlewares-github.com/go-woo/protoc-gen-echo 2022-08-09 14:47:09 +03:00
response_test.go Add the ability to change the status code using Response beforeFuncs 2020-12-06 18:31:15 +03:30
response.go Add the ability to change the status code using Response beforeFuncs 2020-12-06 18:31:15 +03:30
router_test.go Fix case when routeNotFound handler is lost when new route is added to the router (#2219) 2022-07-13 08:16:27 +03:00
router.go Fix case when routeNotFound handler is lost when new route is added to the router (#2219) 2022-07-13 08:16:27 +03:00

Sourcegraph GoDoc Go Report Card Build Status Codecov Forum Twitter License

Supported Go versions

As of version 4.0.0, Echo is available as a Go module. Therefore a Go version capable of understanding /vN suffixed imports is required:

  • 1.9.7+
  • 1.10.3+
  • 1.14+

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.

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

Benchmarks

Date: 2020/11/11
Source: https://github.com/vishr/web-framework-benchmark
Lower is better!

The benchmarks above were run on an Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz

Guide

Installation

// go get github.com/labstack/echo/{version}
go get github.com/labstack/echo/v4

Example

package main

import (
  "github.com/labstack/echo/v4"
  "github.com/labstack/echo/v4/middleware"
  "net/http"
)

func main() {
  // Echo instance
  e := echo.New()

  // Middleware
  e.Use(middleware.Logger())
  e.Use(middleware.Recover())

  // Routes
  e.GET("/", hello)

  // Start server
  e.Logger.Fatal(e.Start(":1323"))
}

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

Third-party middlewares

Repository Description
github.com/labstack/echo-contrib (by Echo team) casbin, gorilla/sessions, jaegertracing, prometheus, pprof, zipkin middlewares
deepmap/oapi-codegen Automatically generate RESTful API documentation with OpenAPI Client and Server Code Generator
github.com/swaggo/echo-swagger Automatically generate RESTful API documentation with Swagger 2.0.
github.com/ziflex/lecho Zerolog logging library wrapper for Echo logger interface.
github.com/brpaz/echozap Uber´s Zap logging library wrapper for Echo logger interface.
github.com/darkweak/souin/plugins/echo HTTP cache system based on Souin to automatically get your endpoints cached. It supports some distributed and non-distributed storage systems depending your needs.
github.com/mikestefanello/pagoda Rapid, easy full-stack web development starter kit built with Echo.
github.com/go-woo/protoc-gen-echo ProtoBuf generate Echo server side code

Please send a PR to add your own library here.

Help

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

License

MIT