mirror of
https://github.com/labstack/echo.git
synced 2025-12-24 00:01:26 +02:00
fix-context-bind-comment
Addresses issue #2382 by correcting the confusing comment on Context.Bind that did not accurately describe the actual binding behavior. **Problem:** The previous comment said "Bind binds path params, query params and the request body" which was incomplete and misleading because: - It didn't explain the binding ORDER (path → query → body) - It didn't mention that later steps can OVERRIDE earlier values - It didn't specify that query params are only bound for GET/DELETE/HEAD - It didn't reference single-source binding methods **Solution:** Updated the comment to clearly explain: - The exact binding order (1) path params, 2) query params, 3) body) - Override behavior between steps - HTTP method-specific behavior for query params - References to single-source binding methods - Content-Type handling for body binding This prevents confusion for developers who might expect different behavior from Context.Bind() based on the previous misleading documentation. Fixes #2382 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Fix Echo.Serve() will not serve on HTTP port correctly when there is already TLSListener set to Echo instance. (#1785) (#1793)
When route is registered with empty path it is normalized to
/. Make sure that returned echo.Route structs reflect that behavior. (#2616)
Change type definition blocks to single declarations. This helps copy/pasting Echo code in examples. (#2606)
Add TemplateRenderer struct to ease creating renderers for
html/template and text/template packages.
Add TemplateRenderer struct to ease creating renderers for
html/template and text/template packages.
Echo
High performance, extensible, minimalist Go web framework.
Help and questions: Github 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
Click here for more information on sponsorship.
Guide
Installation
// go get github.com/labstack/echo/{version}
go get github.com/labstack/echo/v4
Latest version of Echo supports last four Go major releases and might work with older versions.
Example
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 | JWT middleware |
| github.com/labstack/echo-contrib | casbin, gorilla/sessions, jaegertracing, prometheus, pprof, zipkin 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 | 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/samber/slog-echo | Go slog 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.
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 (Author)
- Nitin Rana (Consultant)
- Roland Lammel (Maintainer)
- Martti T. (Maintainer)
- Pablo Andres Fuente (Maintainer)
- Contributors
License
Description
High performance, minimalist Go web framework
https://echo.labstack.com/
echogohttp2httpslabstack-echoletsencryptmicro-frameworkmicroservicemiddlewaresslwebweb-frameworkwebsocket
Readme
MIT
15 MiB
Languages
Go
99.9%
Makefile
0.1%