echo

package module
v2.0.0-apha1+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 10, 2016 License: MIT Imports: 20 Imported by: 0

README

WORK IN PROGRESS!

Echo GoDoc License Build Status Coverage Status

A fast and unfancy micro web framework for Go.

package main

import (
	"github.com/labstack/echo"
	// "github.com/labstack/echo/engine/fasthttp"
	"github.com/labstack/echo/engine/standard"
	mw "github.com/labstack/echo/middleware"
)

func main() {
	e := echo.New()
	e.Use(mw.Log())
	e.Get("/", func(c echo.Context) error {
		return c.String(200, "Hello, World!")
	})
	e.Get("/v2", func(c echo.Context) error {
		return c.String(200, "Echo v2")
	})

	// FastHTTP
	// e.Run(fasthttp.New(":4444"))

	// Standard
	e.Run(standard.New(":4444"))
}

Performance

Based on [vishr/go-http-routing-benchmark] (https://github.com/vishr/go-http-routing-benchmark), June 5, 2015.

Echo: 38662 ns/op, 0 B/op, 0 allocs/op

Performance

BenchmarkAce_GithubAll              20000             93675 ns/op           13792 B/op      167 allocs/op
BenchmarkBear_GithubAll             10000            264194 ns/op           79952 B/op      943 allocs/op
BenchmarkBeego_GithubAll             2000           1109160 ns/op          146272 B/op      2092 allocs/op
BenchmarkBone_GithubAll              1000           2063973 ns/op          648016 B/op     8119 allocs/op
BenchmarkDenco_GithubAll            20000             83114 ns/op           20224 B/op       167 allocs/op
BenchmarkEcho_GithubAll             30000             38662 ns/op               0 B/op        0 allocs/op
BenchmarkGin_GithubAll              30000             43467 ns/op               0 B/op        0 allocs/op
BenchmarkGocraftWeb_GithubAll        5000            386829 ns/op          133280 B/op      1889 allocs/op
BenchmarkGoji_GithubAll              3000            561131 ns/op           56113 B/op      334 allocs/op
BenchmarkGoJsonRest_GithubAll        3000            490789 ns/op          135995 B/op      2940 allocs/op
BenchmarkGoRestful_GithubAll          100          15569513 ns/op          797239 B/op      7725 allocs/op
BenchmarkGorillaMux_GithubAll         200           7431130 ns/op          153137 B/op      1791 allocs/op
BenchmarkHttpRouter_GithubAll       30000             51192 ns/op           13792 B/op       167 allocs/op
BenchmarkHttpTreeMux_GithubAll      10000            138164 ns/op           56112 B/op       334 allocs/op
BenchmarkKocha_GithubAll            10000            139625 ns/op           23304 B/op       843 allocs/op
BenchmarkMacaron_GithubAll           2000            709932 ns/op          224960 B/op      2315 allocs/op
BenchmarkMartini_GithubAll            100          10261331 ns/op          237953 B/op      2686 allocs/op
BenchmarkPat_GithubAll                500           3989686 ns/op         1504104 B/op    32222 allocs/op
BenchmarkPossum_GithubAll            5000            259165 ns/op           97441 B/op       812 allocs/op
BenchmarkR2router_GithubAll         10000            240345 ns/op           77328 B/op      1182 allocs/op
BenchmarkRevel_GithubAll             2000           1203336 ns/op          345554 B/op      5918 allocs/op
BenchmarkRivet_GithubAll            10000            247213 ns/op           84272 B/op      1079 allocs/op
BenchmarkTango_GithubAll             5000            379960 ns/op           87081 B/op      2470 allocs/op
BenchmarkTigerTonic_GithubAll        2000            931401 ns/op          241089 B/op      6052 allocs/op
BenchmarkTraffic_GithubAll            200           7292170 ns/op         2664770 B/op     22390 allocs/op
BenchmarkVulcan_GithubAll            5000            271682 ns/op           19894 B/op       609 allocs/op
BenchmarkZeus_GithubAll              2000            748827 ns/op          300688 B/op     2648 allocs/op

Contribute

Use issues for everything

  • Report problems
  • Discuss before sending a pull request
  • Suggest new features/recipes
  • Improve/fix documentation

Credits

Documentation

Index

Constants

View Source
const (
	// CONNECT HTTP method
	CONNECT = "CONNECT"
	// DELETE HTTP method
	DELETE = "DELETE"
	// GET HTTP method
	GET = "GET"
	// HEAD HTTP method
	HEAD = "HEAD"
	// OPTIONS HTTP method
	OPTIONS = "OPTIONS"
	// PATCH HTTP method
	PATCH = "PATCH"
	// POST HTTP method
	POST = "POST"
	// PUT HTTP method
	PUT = "PUT"
	// TRACE HTTP method
	TRACE = "TRACE"

	ApplicationJSON                  = "application/json"
	ApplicationJSONCharsetUTF8       = ApplicationJSON + "; " + CharsetUTF8
	ApplicationJavaScript            = "application/javascript"
	ApplicationJavaScriptCharsetUTF8 = ApplicationJavaScript + "; " + CharsetUTF8
	ApplicationXML                   = "application/xml"
	ApplicationXMLCharsetUTF8        = ApplicationXML + "; " + CharsetUTF8
	ApplicationForm                  = "application/x-www-form-urlencoded"
	ApplicationProtobuf              = "application/protobuf"
	ApplicationMsgpack               = "application/msgpack"
	TextHTML                         = "text/html"
	TextHTMLCharsetUTF8              = TextHTML + "; " + CharsetUTF8
	TextPlain                        = "text/plain"
	TextPlainCharsetUTF8             = TextPlain + "; " + CharsetUTF8
	MultipartForm                    = "multipart/form-data"

	CharsetUTF8 = "charset=utf-8"

	AcceptEncoding     = "Accept-Encoding"
	Authorization      = "Authorization"
	ContentDisposition = "Content-Disposition"
	ContentEncoding    = "Content-Encoding"
	ContentLength      = "Content-Length"
	ContentType        = "Content-Type"
	Location           = "Location"
	Upgrade            = "Upgrade"
	Vary               = "Vary"
	WWWAuthenticate    = "WWW-Authenticate"
	XForwardedFor      = "X-Forwarded-For"
	XRealIP            = "X-Real-IP"

	WebSocket = "websocket"
)

Variables

View Source
var (
	UnsupportedMediaType  = NewHTTPError(http.StatusUnsupportedMediaType)
	RendererNotRegistered = errors.New("renderer not registered")
	InvalidRedirectCode   = errors.New("invalid redirect status code")
)

Functions

This section is empty.

Types

type Binder added in v1.2.0

type Binder interface {
	Bind(engine.Request, interface{}) error
}

Binder is the interface that wraps the Bind method.

type Context

type Context interface {
	netContext.Context
	Request() engine.Request
	Response() engine.Response
	Socket() *websocket.Conn
	Path() string
	P(int) string
	Param(string) string
	Query(string) string
	Form(string) string
	Set(string, interface{})
	Get(string) interface{}
	Bind(interface{}) error
	Render(int, string, interface{}) error
	HTML(int, string) error
	String(int, string) error
	JSON(int, interface{}) error
	JSONIndent(int, interface{}, string, string) error
	JSONP(int, string, interface{}) error
	XML(int, interface{}) error
	XMLIndent(int, interface{}, string, string) error
	File(string, string, bool) error
	NoContent(int) error
	Redirect(int, string) error
	Error(err error)
	Logger() logger.Logger
	Object() *context
}

Context represents context for the current request. It holds request and response objects, path parameters, data and registered handler.

func NewContext added in v0.0.13

func NewContext(req engine.Request, res engine.Response, e *Echo) Context

NewContext creates a Context object.

type Echo

type Echo struct {
	// contains filtered or unexported fields
}

func New

func New() (e *Echo)

New creates an instance of Echo.

func (*Echo) Any added in v1.2.0

func (e *Echo) Any(path string, handler interface{})

Any adds a route > handler to the router for all HTTP methods.

func (*Echo) AutoIndex

func (e *Echo) AutoIndex(on bool)

AutoIndex enable/disable automatically creating an index page for the directory.

func (*Echo) Connect

func (e *Echo) Connect(path string, handler interface{})

Connect adds a CONNECT route > handler to the router.

func (*Echo) Debug added in v0.0.13

func (e *Echo) Debug() bool

Debug returns debug mode (enabled or disabled).

func (*Echo) DefaultHTTPErrorHandler added in v1.0.0

func (e *Echo) DefaultHTTPErrorHandler(err error, c Context)

DefaultHTTPErrorHandler invokes the default HTTP error handler.

func (*Echo) Delete

func (e *Echo) Delete(path string, handler interface{})

Delete adds a DELETE route > handler to the router.

func (*Echo) Favicon added in v0.0.13

func (e *Echo) Favicon(file string)

Favicon serves the default favicon - GET /favicon.ico.

func (*Echo) Get

func (e *Echo) Get(path string, handler interface{})

Get adds a GET route > handler to the router.

func (*Echo) Group added in v0.0.4

func (e *Echo) Group(prefix string, m ...MiddlewareFunc) *Group

Group creates a new sub router with prefix. It inherits all properties from the parent. Passing middleware overrides parent middleware.

func (*Echo) HTTP2 added in v0.0.15

func (e *Echo) HTTP2(on bool)

HTTP2 enable/disable HTTP2 support.

func (*Echo) Head

func (e *Echo) Head(path string, handler interface{})

Head adds a HEAD route > handler to the router.

func (*Echo) Hook

func (e *Echo) Hook(h engine.HandlerFunc)

Hook registers a callback which is invoked from `Echo#ServerHTTP` as the first statement. Hook is useful if you want to modify response/response objects even before it hits the router or any middleware.

func (*Echo) Index

func (e *Echo) Index(file string)

Index serves index file.

func (*Echo) Logger

func (e *Echo) Logger() logger.Logger

Logger returns the logger instance.

func (*Echo) Match added in v1.2.0

func (e *Echo) Match(methods []string, path string, handler interface{})

Match adds a route > handler to the router for multiple HTTP methods provided.

func (*Echo) Options

func (e *Echo) Options(path string, handler interface{})

Options adds an OPTIONS route > handler to the router.

func (*Echo) Patch

func (e *Echo) Patch(path string, handler interface{})

Patch adds a PATCH route > handler to the router.

func (*Echo) Post

func (e *Echo) Post(path string, handler interface{})

Post adds a POST route > handler to the router.

func (*Echo) Put

func (e *Echo) Put(path string, handler interface{})

Put adds a PUT route > handler to the router.

func (*Echo) Router

func (e *Echo) Router() *Router

Router returns router.

func (*Echo) Routes added in v1.0.0

func (e *Echo) Routes() []Route

Routes returns the registered routes.

func (*Echo) Run

func (e *Echo) Run(eng engine.Engine)

Run starts the HTTP engine.

func (*Echo) ServeDir added in v1.0.0

func (e *Echo) ServeDir(path, dir string)

ServeDir serves files from a directory.

func (*Echo) ServeFile

func (e *Echo) ServeFile(path, file string)

ServeFile serves a file.

func (*Echo) ServeHTTP

func (e *Echo) ServeHTTP(req engine.Request, res engine.Response)

func (*Echo) SetBinder added in v0.0.14

func (e *Echo) SetBinder(b Binder)

SetBinder registers a custom binder. It's invoked by Context.Bind().

func (*Echo) SetDebug added in v0.0.14

func (e *Echo) SetDebug(on bool)

SetDebug enable/disable debug mode.

func (*Echo) SetHTTPErrorHandler added in v0.0.14

func (e *Echo) SetHTTPErrorHandler(h HTTPErrorHandler)

SetHTTPErrorHandler registers a custom Echo.HTTPErrorHandler.

func (*Echo) SetLogger

func (e *Echo) SetLogger(l logger.Logger)

SetLogger sets the logger instance.

func (*Echo) SetRenderer added in v0.0.14

func (e *Echo) SetRenderer(r Renderer)

SetRenderer registers an HTML template renderer. It's invoked by Context.Render().

func (*Echo) Static

func (e *Echo) Static(path, dir string)

Static serves static files from a directory. It's an alias for `Echo.ServeDir`

func (*Echo) Trace

func (e *Echo) Trace(path string, handler interface{})

Trace adds a TRACE route > handler to the router.

func (*Echo) URI added in v0.0.11

func (e *Echo) URI(h HandlerFunc, params ...interface{}) string

URI generates a URI from handler.

func (*Echo) URL added in v0.0.11

func (e *Echo) URL(h HandlerFunc, params ...interface{}) string

URL is an alias for `URI` function.

func (*Echo) Use

func (e *Echo) Use(middleware ...interface{})

Use adds handler to the middleware chain.

type Group added in v0.0.16

type Group struct {
	// contains filtered or unexported fields
}

func (*Group) Connect added in v0.0.16

func (g *Group) Connect(path string, h HandlerFunc)

func (*Group) Delete added in v0.0.16

func (g *Group) Delete(path string, h HandlerFunc)

func (*Group) Get added in v0.0.16

func (g *Group) Get(path string, h HandlerFunc)

func (*Group) Group added in v0.0.16

func (g *Group) Group(prefix string, m ...MiddlewareFunc) *Group

func (*Group) Head added in v0.0.16

func (g *Group) Head(path string, h HandlerFunc)

func (*Group) Options added in v0.0.16

func (g *Group) Options(path string, h HandlerFunc)

func (*Group) Patch added in v0.0.16

func (g *Group) Patch(path string, h HandlerFunc)

func (*Group) Post added in v0.0.16

func (g *Group) Post(path string, h HandlerFunc)

func (*Group) Put added in v0.0.16

func (g *Group) Put(path string, h HandlerFunc)

func (*Group) ServeDir added in v1.0.0

func (g *Group) ServeDir(path, root string)

func (*Group) ServeFile added in v1.0.0

func (g *Group) ServeFile(path, file string)

func (*Group) Static added in v1.0.0

func (g *Group) Static(path, root string)

func (*Group) Trace added in v0.0.16

func (g *Group) Trace(path string, h HandlerFunc)

func (*Group) Use added in v0.0.16

func (g *Group) Use(m ...MiddlewareFunc)

type HTTPError added in v0.0.12

type HTTPError struct {
	// contains filtered or unexported fields
}

func NewHTTPError added in v0.0.14

func NewHTTPError(code int, msg ...string) *HTTPError

func (*HTTPError) Code added in v0.0.12

func (e *HTTPError) Code() int

Code returns code.

func (*HTTPError) Error added in v0.0.12

func (e *HTTPError) Error() string

Error returns message.

func (*HTTPError) SetCode added in v1.0.0

func (e *HTTPError) SetCode(code int)

SetCode sets code.

type HTTPErrorHandler added in v0.0.10

type HTTPErrorHandler func(error, Context)

HTTPErrorHandler is a centralized HTTP error handler.

type Handler

type Handler interface {
	Handle(Context) error
}

type HandlerFunc

type HandlerFunc func(Context) error

func (HandlerFunc) Handle

func (f HandlerFunc) Handle(c Context) error

type Middleware

type Middleware interface {
	Process(HandlerFunc) HandlerFunc
}

type MiddlewareFunc

type MiddlewareFunc func(HandlerFunc) HandlerFunc

func (MiddlewareFunc) Process

func (f MiddlewareFunc) Process(h HandlerFunc) HandlerFunc

type Renderer added in v0.0.7

type Renderer interface {
	Render(w io.Writer, name string, data interface{}) error
}

Renderer is the interface that wraps the Render method.

type Route added in v1.0.0

type Route struct {
	Method  string
	Path    string
	Handler string
}

type Router added in v0.0.16

type Router struct {
	// contains filtered or unexported fields
}

func NewRouter

func NewRouter(e *Echo) *Router

func (*Router) Add added in v0.0.16

func (r *Router) Add(method, path string, h HandlerFunc, e *Echo)

func (*Router) Find added in v0.0.16

func (r *Router) Find(method, path string, context Context) (h HandlerFunc, e *Echo)

type Validator added in v1.2.0

type Validator interface {
	Validate() error
}

Validator is the interface that wraps the Validate method.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL