2018-01-25 19:26:21 +02:00
|
|
|
<a href="https://echo.labstack.com"><img height="80" src="https://cdn.labstack.com/images/echo-logo.svg"></a>
|
2017-06-07 20:10:09 +02:00
|
|
|
|
2017-06-19 07:35:02 +02:00
|
|
|
[![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)](http://godoc.org/github.com/labstack/echo)
|
|
|
|
[![Go Report Card](https://goreportcard.com/badge/github.com/labstack/echo?style=flat-square)](https://goreportcard.com/report/github.com/labstack/echo)
|
|
|
|
[![Build Status](http://img.shields.io/travis/labstack/echo.svg?style=flat-square)](https://travis-ci.org/labstack/echo)
|
|
|
|
[![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://forum.labstack.com)
|
|
|
|
[![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)
|
2015-06-30 21:10:35 +02:00
|
|
|
|
2016-06-08 05:24:24 +02:00
|
|
|
## Feature Overview
|
2016-03-11 08:22:42 +02:00
|
|
|
|
2016-09-07 04:41:05 +02:00
|
|
|
- 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
|
2016-11-13 03:26:15 +02:00
|
|
|
- Automatic TLS via Let’s Encrypt
|
2016-11-25 23:03:03 +02:00
|
|
|
- HTTP/2 support
|
2016-03-11 08:22:42 +02:00
|
|
|
|
|
|
|
## Performance
|
|
|
|
|
2018-01-30 06:38:18 +02:00
|
|
|
<img src="https://api.labstack.com/chart/bar?values=20015,39584,7282,11276&labels=Static,GitHub%20API,Parse%20API,Google%20Plus%20API&x_title=Route&y_title=Time%20(ns/op)&colors=c" width=600 height=400>
|
2016-03-11 08:22:42 +02:00
|
|
|
|
2018-01-30 06:02:11 +02:00
|
|
|
## [Guide](https://echo.labstack.com/guide)
|
2016-03-29 22:53:40 +02:00
|
|
|
|
2018-01-30 06:38:18 +02:00
|
|
|
### Example
|
2018-01-30 06:00:48 +02:00
|
|
|
|
2018-01-30 06:02:11 +02:00
|
|
|
```go
|
2018-01-30 06:00:48 +02:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
|
|
|
|
"github.com/labstack/echo"
|
|
|
|
"github.com/labstack/echo/middleware"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
// Echo instance
|
|
|
|
e := echo.New()
|
2018-01-30 06:02:11 +02:00
|
|
|
|
2018-01-30 06:00:48 +02:00
|
|
|
// Middleware
|
|
|
|
e.Use(middleware.Logger())
|
|
|
|
e.Use(middleware.Recover())
|
2018-01-30 06:02:11 +02:00
|
|
|
|
2018-01-30 06:00:48 +02:00
|
|
|
// Routes
|
|
|
|
e.GET("/", hello)
|
2018-01-30 06:02:11 +02:00
|
|
|
|
2018-01-30 06:00:48 +02:00
|
|
|
// Start server
|
|
|
|
e.Logger.Fatal(e.Start(":1323"))
|
|
|
|
}
|
|
|
|
|
|
|
|
// Handler
|
|
|
|
func hello(c echo.Context) error {
|
|
|
|
return c.String(http.StatusOK, "Hello, World!")
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2016-04-03 04:32:52 +02:00
|
|
|
## Support Us
|
2016-03-29 22:53:40 +02:00
|
|
|
|
|
|
|
- :star: the project
|
2016-09-07 07:09:51 +02:00
|
|
|
- [Donate](https://echo.labstack.com/support-echo)
|
2016-04-02 23:19:39 +02:00
|
|
|
- :earth_americas: spread the word
|
2016-03-29 22:53:40 +02:00
|
|
|
- [Contribute](#contribute) to the project
|
|
|
|
|
2015-04-26 01:10:28 +02:00
|
|
|
## Contribute
|
|
|
|
|
|
|
|
**Use issues for everything**
|
2015-04-27 07:41:41 +02:00
|
|
|
|
2016-12-16 04:44:06 +02:00
|
|
|
- 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
|
2017-01-10 18:45:44 +02:00
|
|
|
- Example (If it makes sense)
|
2016-12-16 04:44:06 +02:00
|
|
|
- You can also contribute by:
|
|
|
|
- Reporting issues
|
|
|
|
- Suggesting new features or enhancements
|
|
|
|
- Improve/fix documentation
|
2015-04-26 01:10:28 +02:00
|
|
|
|
|
|
|
## Credits
|
|
|
|
- [Vishal Rana](https://github.com/vishr) - Author
|
|
|
|
- [Nitin Rana](https://github.com/nr17) - Consultant
|
|
|
|
- [Contributors](https://github.com/labstack/echo/graphs/contributors)
|
2016-03-11 08:22:42 +02:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
[MIT](https://github.com/labstack/echo/blob/master/LICENSE)
|