echo

package module
v2.0.0-beta.1 Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2016 License: MIT Imports: 19 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.Logger())
	e.Use(mw.Recover())
	e.Get("/", echo.HandlerFunc(func(c echo.Context) error {
		return c.String(200, "Hello, World!")
	}))
	e.Get("/v2", echo.HandlerFunc(func(c echo.Context) error {
		return c.String(200, "Echo v2")
	}))

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

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

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

Support

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"
	OctetStream                      = "application/octet-stream"

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

Variables

View Source
var (
	ErrUnsupportedMediaType  = NewHTTPError(http.StatusUnsupportedMediaType)
	ErrNotFound              = NewHTTPError(http.StatusNotFound)
	ErrRendererNotRegistered = errors.New("renderer not registered")
	ErrInvalidRedirectCode   = errors.New("invalid redirect status code")
)

Functions

This section is empty.

Types

type Binder

type Binder interface {
	Bind(interface{}, Context) error
}

Binder is the interface that wraps the Bind method.

type Context

type Context interface {
	netContext.Context
	Request() engine.Request
	Response() engine.Response
	Path() string
	P(int) string
	Param(string) string
	ParamNames() []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
	JSONBlob(int, []byte) error
	JSONP(int, string, interface{}) error
	XML(int, interface{}) error
	XMLBlob(int, []byte) error
	Attachment(string) error
	NoContent(int) error
	Redirect(int, string) error
	Error(err error)
	Handle(Context) error
	Logger() *log.Logger
	Echo() *Echo
	Object() *context
}

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

func NewContext

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

func (e *Echo) Any(path string, handler Handler, middleware ...Middleware)

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

func (*Echo) Connect

func (e *Echo) Connect(path string, h Handler, m ...Middleware)

Connect adds a CONNECT route > handler to the router.

func (*Echo) Debug

func (e *Echo) Debug() bool

Debug returns debug mode (enabled or disabled).

func (*Echo) DefaultHTTPErrorHandler

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

DefaultHTTPErrorHandler invokes the default HTTP error handler.

func (*Echo) Delete

func (e *Echo) Delete(path string, h Handler, m ...Middleware)

Delete adds a DELETE route > handler to the router.

func (*Echo) Get

func (e *Echo) Get(path string, h Handler, m ...Middleware)

Get adds a GET route > handler to the router.

func (*Echo) Group

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

Group creates a new sub-router with prefix.

func (*Echo) Head

func (e *Echo) Head(path string, h Handler, m ...Middleware)

Head adds a HEAD route > handler to the router.

func (*Echo) Logger

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

Logger returns the logger instance.

func (*Echo) Match

func (e *Echo) Match(methods []string, path string, handler Handler, middleware ...Middleware)

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

func (*Echo) Options

func (e *Echo) Options(path string, h Handler, m ...Middleware)

Options adds an OPTIONS route > handler to the router.

func (*Echo) Patch

func (e *Echo) Patch(path string, h Handler, m ...Middleware)

Patch adds a PATCH route > handler to the router.

func (*Echo) Post

func (e *Echo) Post(path string, h Handler, m ...Middleware)

Post adds a POST route > handler to the router.

func (*Echo) Put

func (e *Echo) Put(path string, h Handler, m ...Middleware)

Put adds a PUT route > handler to the router.

func (*Echo) Router

func (e *Echo) Router() *Router

Router returns router.

func (*Echo) Routes

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) ServeHTTP

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

func (*Echo) SetBinder

func (e *Echo) SetBinder(b Binder)

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

func (*Echo) SetDebug

func (e *Echo) SetDebug(on bool)

SetDebug enable/disable debug mode.

func (*Echo) SetHTTPErrorHandler

func (e *Echo) SetHTTPErrorHandler(h HTTPErrorHandler)

SetHTTPErrorHandler registers a custom Echo.HTTPErrorHandler.

func (*Echo) SetLogLevel

func (e *Echo) SetLogLevel(l log.Level)

SetLogLevel sets the log level for the logger. Default value is `log.FATAL`.

func (*Echo) SetLogOutput

func (e *Echo) SetLogOutput(w io.Writer)

SetLogOutput sets the output destination for the logger. Default value is `os.Std*`

func (*Echo) SetLogPrefix

func (e *Echo) SetLogPrefix(prefix string)

SetLogPrefix sets the prefix for the logger. Default value is `echo`.

func (*Echo) SetRenderer

func (e *Echo) SetRenderer(r Renderer)

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

func (*Echo) Trace

func (e *Echo) Trace(path string, h Handler, m ...Middleware)

Trace adds a TRACE route > handler to the router.

func (*Echo) URI

func (e *Echo) URI(handler Handler, params ...interface{}) string

URI generates a URI from handler.

func (*Echo) URL

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

URL is an alias for `URI` function.

func (*Echo) Use

func (e *Echo) Use(middleware ...Middleware)

Use adds handler to the middleware chain.

type Group

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

func (*Group) Any

func (g *Group) Any(path string, handler Handler, middleware ...Middleware)

func (*Group) Connect

func (g *Group) Connect(path string, h Handler, m ...Middleware)

func (*Group) Delete

func (g *Group) Delete(path string, h Handler, m ...Middleware)

func (*Group) Get

func (g *Group) Get(path string, h Handler, m ...Middleware)

func (*Group) Group

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

func (*Group) Head

func (g *Group) Head(path string, h Handler, m ...Middleware)

func (*Group) Match

func (g *Group) Match(methods []string, path string, handler Handler, middleware ...Middleware)

func (*Group) Options

func (g *Group) Options(path string, h Handler, m ...Middleware)

func (*Group) Patch

func (g *Group) Patch(path string, h Handler, m ...Middleware)

func (*Group) Post

func (g *Group) Post(path string, h Handler, m ...Middleware)

func (*Group) Put

func (g *Group) Put(path string, h Handler, m ...Middleware)

func (*Group) Trace

func (g *Group) Trace(path string, h Handler, m ...Middleware)

func (*Group) Use

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

type HTTPError

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

func NewHTTPError

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

func (*HTTPError) Code

func (e *HTTPError) Code() int

Code returns code.

func (*HTTPError) Error

func (e *HTTPError) Error() string

Error returns message.

func (*HTTPError) SetCode

func (e *HTTPError) SetCode(code int)

SetCode sets code.

type HTTPErrorHandler

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 (h HandlerFunc) Handle(c Context) error

type Middleware

type Middleware interface {
	Handle(Handler) Handler
}

type MiddlewareFunc

type MiddlewareFunc func(Handler) Handler

func WrapMiddleware

func WrapMiddleware(h Handler) MiddlewareFunc

WrapMiddleware wrap `echo.Handler` into `echo.MiddlewareFunc`.

func (MiddlewareFunc) Handle

func (m MiddlewareFunc) Handle(h Handler) Handler

type Renderer

type Renderer interface {
	Render(io.Writer, string, interface{}, Context) error
}

Renderer is the interface that wraps the Render method.

type Route

type Route struct {
	Method  string
	Path    string
	Handler string
}

type Router

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

func NewRouter

func NewRouter(e *Echo) *Router

func (*Router) Add

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

func (*Router) Find

func (r *Router) Find(method, path string, context Context)

func (*Router) Handle

func (r *Router) Handle(h Handler) Handler

func (*Router) Priority

func (r *Router) Priority() int

type Validator

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