Skip to content
High performance, minimalist Go web framework
Branch: master
Clone or download
DasJott and vishr Provide possibility to use key ids (#1289)
* provide possibility to use key ids
* kid tests
Latest commit e2671fe May 17, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Added probot-stale Nov 30, 2018
_fixture Test cased for Echo#Start/Shutdown Sep 25, 2016
middleware Provide possibility to use key ids (#1289) May 17, 2019
.editorconfig updated docs Nov 17, 2016
.gitattributes Updated website and examples Jan 17, 2017
.gitignore Fixed build Jun 29, 2017
.travis.yml Add go 1.12 to TravisCI (#1294) Feb 26, 2019
LICENSE Update website Jan 10, 2017
Makefile Updated ci Nov 10, 2018
README.md Fixed indentation in code example. (#1338) May 14, 2019
bind.go Remove unreachable code (#1254) Jan 28, 2019
bind_test.go Replace http constants with stdlib ones, i.e.: http.MethodGet instead… Oct 14, 2018
context.go Refactor DefaultProxyConfig Skipper & WebSocket Check in Context (#1297) Mar 2, 2019
context_test.go Increase Context tests coverage (#1279) Feb 19, 2019
echo.go Bumped v4.1.5 Apr 30, 2019
echo_test.go `Echo.StartTLS`: accept `string` or `[]byte` as parameters. (#1277) Feb 15, 2019
go.mod Updated deps and fixed a typo Apr 28, 2019
go.sum Updated deps and fixed a typo Apr 28, 2019
group.go Bumped v4.1.5 Apr 30, 2019
group_test.go Replace http constants with stdlib ones, i.e.: http.MethodGet instead… Oct 14, 2018
log.go the logging interface add SetHeader method (#1092) Sep 28, 2018
response.go Introduced Go module support as v4, removed obsolete CloseNotifier() … Jan 30, 2019
response_test.go Replace http constants with stdlib ones, i.e.: http.MethodGet instead… Oct 14, 2018
router.go Bumped v4.1.5 Apr 30, 2019
router_test.go Replace http constants with stdlib ones, i.e.: http.MethodGet instead… Oct 14, 2018

README.md

Sourcegraph GoDoc Go Report Card Build Status Codecov Join the chat at https://gitter.im/labstack/echo 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.11+

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: 2018/03/15
Source: https://github.com/vishr/web-framework-benchmark
Lower is better!

Guide

Example

package main

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

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!")
}

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

You can’t perform that action at this time.