1
0
mirror of https://github.com/labstack/echo.git synced 2024-12-20 19:52:47 +02:00
High performance, minimalist Go web framework https://echo.labstack.com/
Go to file
toimtoimtoim 6ef5f77bf2 WIP: logger examples
WIP: make default logger implemented custom writer for jsonlike logs
WIP: improve examples
WIP: defaultErrorHandler use errors.As to unwrap errors. Update readme
WIP: default logger logs json, restore e.Start method
WIP: clean router.Match a bit
WIP: func types/fields have echo.Context has first element
WIP: remove yaml tags as functions etc can not be serialized anyway
WIP: change BindPathParams,BindQueryParams,BindHeaders from methods to functions and reverse arguments to be like DefaultBinder.Bind is
WIP: improved comments, logger now extracts status from error
WIP: go mod tidy
WIP: rebase with 4.5.0
WIP:
* removed todos.
* removed StartAutoTLS and StartH2CServer methods from `StartConfig`
* KeyAuth middleware errorhandler can swallow the error and resume next middleware
WIP: add RouterConfig.UseEscapedPathForMatching to use escaped path for matching request against routes
WIP: FIXMEs
WIP: upgrade golang-jwt/jwt to `v4`
WIP: refactor http methods to return RouteInfo
WIP: refactor static not creating multiple routes
WIP: refactor route and middleware adding functions not to return error directly
WIP: Use 401 for problematic/missing headers for key auth and JWT middleware (#1552, #1402).
> In summary, a 401 Unauthorized response should be used for missing or bad authentication
WIP: replace `HTTPError.SetInternal` with `HTTPError.WithInternal` so we could not mutate global error variables
WIP: add RouteInfo and RouteMatchType into Context what we could know from in middleware what route was matched and/or type of that match (200/404/405)
WIP: make notFoundHandler and methodNotAllowedHandler private. encourage that all errors be handled in Echo.HTTPErrorHandler
WIP: server cleanup ideas
WIP: routable.ForGroup
WIP: note about logger middleware
WIP: bind should not default values on second try. use crypto rand for better randomness
WIP: router add route as interface and returns info as interface
WIP: improve flaky test (remains still flaky)
WIP: add notes about bind default values
WIP: every route can have their own path params names
WIP: routerCreator and different tests
WIP: different things
WIP: remove route implementation
WIP: support custom method types
WIP: extractor tests
WIP: v5.0.x proposal
over v4.4.0
2021-10-02 18:36:42 +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 WIP: logger examples 2021-10-02 18:36:42 +03:00
middleware WIP: logger examples 2021-10-02 18:36:42 +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
bind_test.go WIP: logger examples 2021-10-02 18:36:42 +03:00
bind.go WIP: logger examples 2021-10-02 18:36:42 +03: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 WIP: logger examples 2021-10-02 18:36:42 +03:00
binder_test.go WIP: logger examples 2021-10-02 18:36:42 +03:00
binder.go WIP: logger examples 2021-10-02 18:36:42 +03:00
CHANGELOG.md Update version and changelog for 4.6.1 (#1995) 2021-09-26 18:56:43 +03:00
codecov.yml Adding Codecov configuration 2020-12-01 05:00:19 +00:00
context_test.go WIP: logger examples 2021-10-02 18:36:42 +03:00
context.go WIP: logger examples 2021-10-02 18:36:42 +03:00
echo_test.go WIP: logger examples 2021-10-02 18:36:42 +03:00
echo.go WIP: logger examples 2021-10-02 18:36:42 +03:00
go.mod WIP: logger examples 2021-10-02 18:36:42 +03:00
go.sum WIP: logger examples 2021-10-02 18:36:42 +03:00
group_test.go WIP: logger examples 2021-10-02 18:36:42 +03:00
group.go WIP: logger examples 2021-10-02 18:36:42 +03:00
httperror_test.go WIP: logger examples 2021-10-02 18:36:42 +03:00
httperror.go WIP: logger examples 2021-10-02 18:36:42 +03:00
ip_test.go Safer/trustable extraction of real ip from request (#1478) 2020-02-24 08:29:34 -08:00
ip.go Safer/trustable extraction of real ip from request (#1478) 2020-02-24 08:29:34 -08:00
json_test.go Allow for custom JSON encoding implementations (#1880) 2021-07-05 22:33:19 +03:00
json.go WIP: logger examples 2021-10-02 18:36:42 +03:00
LICENSE Create LICENSE 2021-04-17 12:47:48 -07:00
log_test.go WIP: logger examples 2021-10-02 18:36:42 +03:00
log.go WIP: logger examples 2021-10-02 18:36:42 +03:00
Makefile WIP: logger examples 2021-10-02 18:36:42 +03:00
README.md WIP: logger examples 2021-10-02 18:36:42 +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 WIP: logger examples 2021-10-02 18:36:42 +03:00
route_test.go WIP: logger examples 2021-10-02 18:36:42 +03:00
route.go WIP: logger examples 2021-10-02 18:36:42 +03:00
router_test.go WIP: logger examples 2021-10-02 18:36:42 +03:00
router.go WIP: logger examples 2021-10-02 18:36:42 +03:00
server_test.go WIP: logger examples 2021-10-02 18:36:42 +03:00
server.go WIP: logger examples 2021-10-02 18:36:42 +03:00

Sourcegraph GoDoc Go Report Card Build Status Codecov Join the chat at https://gitter.im/labstack/echo Forum Twitter License

Supported Go versions

Echo supports last four major releases. v5 starts from 1.16 until there is last four major releases after that.

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 (
  "net/http"
  "github.com/labstack/echo/v5"
  "github.com/labstack/echo/v5/middleware"
)

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(":1323"); err != http.ErrServerClosed {
    log.Fatal(err)
  }
}

// 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