Documentation ¶
Overview ¶
Package echo implements high performance, minimalist Go web framework.
Example:
package main import ( "net/http" "github.com/zerjioang/gotools/thirdparty/echo" "github.com/zerjioang/gotools/thirdparty/echo/v4/middleware" ) // Handler func hello(c echo.Context) error { return c.String(codes.StatusOK, "Hello, World!") } func main() { // Echo instance e := echo.New() // Middleware e.Use(middleware.Logger()) e.Use(middleware.Recover()) // Routes e.GET("/", hello) // Start server e.Logger.Fatal(e.Start(":1323")) }
Learn more at https://echo.labstack.com
Index ¶
- Constants
- Variables
- type BindUnmarshaler
- type Binder
- type Context
- type DefaultBinder
- type Echo
- func (e *Echo) AcquireContext() Context
- func (e *Echo) Add(method, path string, handler HandlerFunc, middleware ...MiddlewareFunc) *Route
- func (e *Echo) Any(path string, handler HandlerFunc, middleware ...MiddlewareFunc) []*Route
- func (e *Echo) CONNECT(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (e *Echo) Close() error
- func (e *Echo) DELETE(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (e *Echo) DefaultHTTPErrorHandler(err error, c Context)
- func (e *Echo) File(path, file string, m ...MiddlewareFunc) *Route
- func (e *Echo) GET(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (e *Echo) Group(prefix string, m ...MiddlewareFunc) (g *Group)
- func (e *Echo) HEAD(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (e *Echo) Host(name string, m ...MiddlewareFunc) (g *Group)
- func (e *Echo) Match(methods []string, path string, handler HandlerFunc, ...) []*Route
- func (e *Echo) NewContext(r *http.Request, w http.ResponseWriter) Context
- func (e *Echo) OPTIONS(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (e *Echo) PATCH(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (e *Echo) POST(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (e *Echo) PUT(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (e *Echo) Pre(middleware ...MiddlewareFunc)
- func (e *Echo) ReleaseContext(c Context)
- func (e *Echo) Reverse(name string, params ...interface{}) string
- func (e *Echo) Router() *Router
- func (e *Echo) Routers() map[string]*Router
- func (e *Echo) Routes() []*Route
- func (e *Echo) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (e *Echo) Shutdown(ctx stdContext.Context) error
- func (e *Echo) Start(address string) error
- func (e *Echo) StartAutoTLS(address string) error
- func (e *Echo) StartServer(s *http.Server) (err error)
- func (e *Echo) StartTLS(address string, certFile, keyFile interface{}) (err error)
- func (e *Echo) Static(prefix, root string) *Route
- func (e *Echo) TRACE(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (e *Echo) URI(handler HandlerFunc, params ...interface{}) string
- func (e *Echo) URL(h HandlerFunc, params ...interface{}) string
- func (e *Echo) Use(middleware ...MiddlewareFunc)
- type FileBuffer
- type Group
- func (g *Group) Add(method, path string, handler HandlerFunc, middleware ...MiddlewareFunc) *Route
- func (g *Group) Any(path string, handler HandlerFunc, middleware ...MiddlewareFunc) []*Route
- func (g *Group) CONNECT(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (g *Group) DELETE(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (g *Group) File(path, file string)
- func (g *Group) GET(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (g *Group) Group(prefix string, middleware ...MiddlewareFunc) (sg *Group)
- func (g *Group) HEAD(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (g *Group) Match(methods []string, path string, handler HandlerFunc, ...) []*Route
- func (g *Group) OPTIONS(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (g *Group) PATCH(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (g *Group) POST(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (g *Group) PUT(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (g *Group) Static(prefix, root string)
- func (g *Group) TRACE(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
- func (g *Group) Use(middleware ...MiddlewareFunc)
- type HTTPError
- type HTTPErrorHandler
- type HandlerFunc
- type HttpContext
- func (c *HttpContext) Attachment(file, name string) error
- func (c *HttpContext) Bind(i interface{}) error
- func (c *HttpContext) Blob(code codes.HttpStatusCode, contentType string, b []byte) (err error)
- func (c *HttpContext) Body() []byte
- func (c *HttpContext) Cookie(name string) (*http.Cookie, error)
- func (c *HttpContext) Cookies() []*http.Cookie
- func (c *HttpContext) Echo() *Echo
- func (c *HttpContext) Error(err error)
- func (c *HttpContext) File(file string) (err error)
- func (c *HttpContext) FormFile(name string) (*multipart.FileHeader, error)
- func (c *HttpContext) FormParams() (url.Values, error)
- func (c *HttpContext) FormValue(name string) string
- func (c *HttpContext) Get(key string) interface{}
- func (c *HttpContext) HTML(code codes.HttpStatusCode, html string) (err error)
- func (c *HttpContext) HTMLBlob(code codes.HttpStatusCode, b []byte) (err error)
- func (c *HttpContext) Handler() HandlerFunc
- func (c *HttpContext) Inline(file, name string) error
- func (c *HttpContext) JSON(code codes.HttpStatusCode, i interface{}) (err error)
- func (c *HttpContext) JSONBlob(code codes.HttpStatusCode, b []byte) (err error)
- func (c *HttpContext) JSONP(code codes.HttpStatusCode, callback string, i interface{}) (err error)
- func (c *HttpContext) JSONPBlob(code codes.HttpStatusCode, callback string, b []byte) (err error)
- func (c *HttpContext) Logger() Logger
- func (c *HttpContext) MultipartForm() (*multipart.Form, error)
- func (c *HttpContext) NoContent(code codes.HttpStatusCode) error
- func (c *HttpContext) Param(name string) string
- func (c *HttpContext) ParamNames() []string
- func (c *HttpContext) ParamValues() []string
- func (c *HttpContext) Path() string
- func (c *HttpContext) Preload(r *http.Request, w http.ResponseWriter)
- func (c *HttpContext) QueryParam(name string) string
- func (c *HttpContext) QueryParams() url.Values
- func (c *HttpContext) QueryString() string
- func (c *HttpContext) RealIP() string
- func (c *HttpContext) Redirect(code codes.HttpStatusCode, url string) error
- func (c *HttpContext) Render(code codes.HttpStatusCode, name string, data interface{}) (err error)
- func (c *HttpContext) Request() *http.Request
- func (c *HttpContext) RequestContentType() string
- func (c *HttpContext) Reset()
- func (c *HttpContext) Response() *Response
- func (c *HttpContext) Set(key string, val interface{})
- func (c *HttpContext) SetCookie(cookie *http.Cookie)
- func (c *HttpContext) SetHandler(h HandlerFunc)
- func (c *HttpContext) SetParamNames(names ...string)
- func (c *HttpContext) SetParamValues(values ...string)
- func (c *HttpContext) SetPath(p string)
- func (c *HttpContext) SetRequest(r *http.Request)
- func (c *HttpContext) SplitHostPort(address string) (string, string)
- func (c *HttpContext) Stream(code codes.HttpStatusCode, contentType string, r io.Reader) (err error)
- func (c *HttpContext) String(code codes.HttpStatusCode, s string) (err error)
- func (c *HttpContext) WriteContentType(value string)
- type Logger
- type Map
- type MiddlewareFunc
- type Renderer
- type Response
- func (r *Response) After(fn func())
- func (r *Response) Before(fn func())
- func (r *Response) Flush()
- func (r *Response) Header() http.Header
- func (r *Response) HeaderPtr() *http.Header
- func (r *Response) Hijack() (net.Conn, *bufio.ReadWriter, error)
- func (r *Response) Write(b []byte) (n int, err error)
- func (r *Response) WriteHeader(c int)
- func (r *Response) WriteHeaderCode(code codes.HttpStatusCode)
- type Route
- type Router
- type Validator
Constants ¶
const ( CONNECT = http.MethodConnect DELETE = http.MethodDelete GET = http.MethodGet HEAD = http.MethodHead OPTIONS = http.MethodOptions PATCH = http.MethodPatch POST = http.MethodPost // PROPFIND = "PROPFIND" PUT = http.MethodPut TRACE = http.MethodTrace )
HTTP methods NOTE: Deprecated, please use the stdlib constants directly instead.
const ( MIMEApplicationJSON = "application/json" MIMEApplicationJSONCharsetUTF8 = MIMEApplicationJSON + "; " + charsetUTF8 MIMEApplicationJavaScript = "application/javascript" MIMEApplicationJavaScriptCharsetUTF8 = MIMEApplicationJavaScript + "; " + charsetUTF8 MIMEApplicationXML = "application/xml" MIMEApplicationXMLCharsetUTF8 = MIMEApplicationXML + "; " + charsetUTF8 MIMETextXML = "text/xml" MIMETextXMLCharsetUTF8 = MIMETextXML + "; " + charsetUTF8 MIMEApplicationForm = "application/x-www-form-urlencoded" MIMEApplicationProtobuf = "application/protobuf" MIMEApplicationMsgpack = "application/msgpack" MIMETextHTML = "text/html" MIMETextHTMLCharsetUTF8 = MIMETextHTML + "; " + charsetUTF8 MIMETextPlain = "text/plain" MIMETextPlainCharsetUTF8 = MIMETextPlain + "; " + charsetUTF8 MIMEMultipartForm = "multipart/form-data" MIMEOctetStream = "application/octet-stream" )
MIME types
const ( // PROPFIND Method can be used on collection and property resources. PROPFIND = "PROPFIND" // REPORT Method can be used to get information about a resource, see rfc 3253 REPORT = "REPORT" )
const ( HeaderAccept = "Accept" HeaderAcceptEncoding = "Accept-Encoding" HeaderAllow = "Allow" HeaderAuthorization = "Authorization" HeaderContentDisposition = "Content-Disposition" HeaderContentEncoding = "Content-Encoding" HeaderContentLength = "Content-Length" HeaderContentType = "Content-Type" HeaderCookie = "Cookie" HeaderSetCookie = "Set-Cookie" HeaderIfModifiedSince = "If-Modified-Since" HeaderLastModified = "Last-Modified" HeaderLocation = "Location" HeaderUpgrade = "Upgrade" HeaderVary = "Vary" HeaderWWWAuthenticate = "WWW-Authenticate" HeaderXForwardedFor = "X-Forwarded-For" HeaderXForwardedProto = "X-Forwarded-Proto" HeaderXForwardedProtocol = "X-Forwarded-Protocol" HeaderXForwardedSsl = "X-Forwarded-Ssl" HeaderXUrlScheme = "X-Url-Scheme" HeaderXHTTPMethodOverride = "X-HTTP-Method-Override" HeaderXRealIP = "X-Real-IP" HeaderXRequestID = "X-Request-ID" HeaderXRequestedWith = "X-Requested-With" HeaderServer = "Server" HeaderOrigin = "Origin" // Access control HeaderAccessControlRequestMethod = "Access-Control-Request-Method" HeaderAccessControlRequestHeaders = "Access-Control-Request-Headers" HeaderAccessControlAllowOrigin = "Access-Control-Allow-Origin" HeaderAccessControlAllowMethods = "Access-Control-Allow-Methods" HeaderAccessControlAllowHeaders = "Access-Control-Allow-Headers" HeaderAccessControlAllowCredentials = "Access-Control-Allow-Credentials" HeaderAccessControlExposeHeaders = "Access-Control-Expose-Headers" HeaderAccessControlMaxAge = "Access-Control-Max-Age" // Security HeaderStrictTransportSecurity = "Strict-Transport-Security" HeaderXContentTypeOptions = "X-Content-Type-Options" HeaderXXSSProtection = "X-XSS-Protection" HeaderXFrameOptions = "X-Frame-Options" HeaderContentSecurityPolicy = "Content-Security-Policy" HeaderContentSecurityPolicyReportOnly = "Content-Security-Policy-Report-Only" HeaderXCSRFToken = "X-CSRF-Token" HeaderReferrerPolicy = "Referrer-Policy" )
Headers
const ( SeekStart = 0 // seek relative to the origin of the file SeekCurrent = 1 // seek relative to the current offset SeekEnd = 2 // seek relative to the end )
const (
// Version of Echo
Version = "4.1.13"
)
Variables ¶
var ( ErrUnsupportedMediaType = NewHTTPError(codes.StatusUnsupportedMediaType) ErrNotFound = NewHTTPError(codes.StatusNotFound) ErrForbidden = NewHTTPError(codes.StatusForbidden) ErrMethodNotAllowed = NewHTTPError(codes.StatusMethodNotAllowed) ErrStatusRequestEntityTooLarge = NewHTTPError(codes.StatusRequestEntityTooLarge) ErrTooManyRequests = NewHTTPError(codes.StatusTooManyRequests) ErrBadRequest = NewHTTPError(codes.StatusBadRequest) ErrBadGateway = NewHTTPError(codes.StatusBadGateway) ErrInternalServerError = NewHTTPError(codes.StatusInternalServerError) ErrRequestTimeout = NewHTTPError(codes.StatusRequestTimeout) ErrValidatorNotRegistered = errors.New("validator not registered") ErrRendererNotRegistered = errors.New("renderer not registered") ErrInvalidRedirectCode = errors.New("invalid redirect status code") ErrCookieNotFound = errors.New("cookie not found") ErrInvalidCertOrKeyType = errors.New("invalid cert or key type, must be string or []byte") )
Errors
var ( NotFoundHandler = func(c Context) error { return ErrNotFound } MethodNotAllowedHandler = func(c Context) error { return ErrMethodNotAllowed } )
Error handlers
Functions ¶
This section is empty.
Types ¶
type BindUnmarshaler ¶
type BindUnmarshaler interface { // UnmarshalParam decodes and assigns a value from an form or query param. UnmarshalParam(param string) error }
BindUnmarshaler is the interface used to wrap the UnmarshalParam method. Types that don't implement this, but do implement encoding.TextUnmarshaler will use that interface instead.
type Context ¶
type Context interface { // Request returns `*http.Request`. Request() *http.Request // SetRequest sets `*http.Request`. SetRequest(r *http.Request) // SetResponse sets `*Response`. SetResponse(r *Response) // Response returns `*Response`. Response() *Response // IsTLS returns true if HTTP connection is TLS otherwise false. IsTLS() bool // IsWebSocket returns true if HTTP connection is WebSocket otherwise false. IsWebSocket() bool // Scheme returns the HTTP protocol scheme, `http` or `https`. Scheme() protocol.RequestScheme // RealIP returns the client's network address based on `X-Forwarded-For` // or `X-Real-IP` request header. RealIP() string // Path returns the registered path for the handler. Path() string // SetPath sets the registered path for the handler. SetPath(p string) // Param returns path parameter by name. Param(name string) string // ParamNames returns path parameter names. ParamNames() []string // SetParamNames sets path parameter names. SetParamNames(names ...string) // ParamValues returns path parameter values. ParamValues() []string // SetParamValues sets path parameter values. SetParamValues(values ...string) // QueryParam returns the query param for the provided name. QueryParam(name string) string // QueryParams returns the query parameters as `url.Values`. QueryParams() url.Values // QueryString returns the URL query string. QueryString() string // FormValue returns the form field value for the provided name. FormValue(name string) string // FormParams returns the form parameters as `url.Values`. FormParams() (url.Values, error) // FormFile returns the multipart form file for the provided name. FormFile(name string) (*multipart.FileHeader, error) // MultipartForm returns the multipart form. MultipartForm() (*multipart.Form, error) // Cookie returns the named cookie provided in the request. Cookie(name string) (*http.Cookie, error) // SetCookie adds a `Set-Cookie` header in HTTP response. SetCookie(cookie *http.Cookie) // Cookies returns the HTTP cookies sent with the request. Cookies() []*http.Cookie // Get retrieves data from the context. Get(key string) interface{} // Set saves data in the context. Set(key string, val interface{}) // Bind binds the request body into provided type `i`. The default binder // does it based on Content-Type header. Bind(i interface{}) error // Validate validates provided `i`. It is usually called after `Context#Bind()`. // Validator must be registered using `Echo#Validator`. Validate(i interface{}) error // Render renders a template with data and sends a text/html response with status // code. Renderer must be registered using `Echo.Renderer`. Render(code codes.HttpStatusCode, name string, data interface{}) error // HTML sends an HTTP response with status code. HTML(code codes.HttpStatusCode, html string) error // HTMLBlob sends an HTTP blob response with status code. HTMLBlob(code codes.HttpStatusCode, b []byte) error // String sends a string response with status code. String(code codes.HttpStatusCode, s string) error // JSON sends a JSON response with status code. JSON(code codes.HttpStatusCode, i interface{}) error // JSONPretty sends a pretty-print JSON with status code. JSONPretty(code codes.HttpStatusCode, i interface{}, indent string) error // JSONBlob sends a JSON blob response with status code. JSONBlob(code codes.HttpStatusCode, b []byte) error // JSONP sends a JSONP response with status code. It uses `callback` to construct // the JSONP payload. JSONP(code codes.HttpStatusCode, callback string, i interface{}) error // JSONPBlob sends a JSONP blob response with status code. It uses `callback` // to construct the JSONP payload. JSONPBlob(code codes.HttpStatusCode, callback string, b []byte) error // XML sends an XML response with status code. XML(code codes.HttpStatusCode, i interface{}) error // XMLPretty sends a pretty-print XML with status code. XMLPretty(code codes.HttpStatusCode, i interface{}, indent string) error // XMLBlob sends an XML blob response with status code. XMLBlob(code codes.HttpStatusCode, b []byte) error // Blob sends a blob response with status code and content type. Blob(code codes.HttpStatusCode, contentType string, b []byte) error // Stream sends a streaming response with status code and content type. Stream(code codes.HttpStatusCode, contentType string, r io.Reader) error // File sends a response with the content of the file. File(file string) error // Attachment sends a response as attachment, prompting client to save the // file. Attachment(file string, name string) error // Inline sends a response as inline, opening the file in the browser. Inline(file string, name string) error // NoContent sends a response with no body and a status code. NoContent(code codes.HttpStatusCode) error // Redirect redirects the request to a provided URL with status code. Redirect(code codes.HttpStatusCode, url string) error // Error invokes the registered HTTP error handler. Generally used by middleware. Error(err error) // Handler returns the matched handler by router. Handler() HandlerFunc // SetHandler sets the matched handler by router. SetHandler(h HandlerFunc) // Logger returns the `Logger` instance. Logger() Logger // Set the logger SetLogger(l Logger) // Echo returns the `Echo` instance. Echo() *Echo // Reset resets the context after request completes. It must be called along // with `Echo#AcquireContext()` and `Echo#ReleaseContext()`. // See `Echo#ServeHTTP()` //Reset(r *http.Request, w http.ResponseWriter) Reset() Preload(r *http.Request, w http.ResponseWriter) WriteContentType(value string) Body() []byte RequestContentType() string }
Context represents the context of the current HTTP request. It holds request and response objects, path, path parameters, data and registered handler.
type DefaultBinder ¶
type DefaultBinder struct{}
DefaultBinder is the default implementation of the Binder interface.
func (*DefaultBinder) Bind ¶
func (b *DefaultBinder) Bind(i interface{}, c Context) (err error)
Bind implements the `Binder#Bind` function.
type Echo ¶
type Echo struct { StdLogger *stdLog.Logger Server *http.Server TLSServer *http.Server Listener net.Listener TLSListener net.Listener //AutoTLSManager autocert.Manager DisableHTTP2 bool Debug bool HideBanner bool HidePort bool HTTPErrorHandler HTTPErrorHandler Binder Binder Validator Validator Renderer Renderer Logger Logger // contains filtered or unexported fields }
Echo is the top-level framework instance.
func (*Echo) AcquireContext ¶
AcquireContext returns an empty `Context` instance from the pool. You must return the context by calling `ReleaseContext()`.
func (*Echo) Add ¶
func (e *Echo) Add(method, path string, handler HandlerFunc, middleware ...MiddlewareFunc) *Route
Add registers a new route for an HTTP method and path with matching handler in the router with optional route-level middleware.
func (*Echo) Any ¶
func (e *Echo) Any(path string, handler HandlerFunc, middleware ...MiddlewareFunc) []*Route
Any registers a new route for all HTTP methods and path with matching handler in the router with optional route-level middleware.
func (*Echo) CONNECT ¶
func (e *Echo) CONNECT(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
CONNECT registers a new CONNECT route for a path with matching handler in the router with optional route-level middleware.
func (*Echo) DELETE ¶
func (e *Echo) DELETE(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
DELETE registers a new DELETE route for a path with matching handler in the router with optional route-level middleware.
func (*Echo) DefaultHTTPErrorHandler ¶
DefaultHTTPErrorHandler is the default HTTP error handler. It sends a JSON response with status code.
func (*Echo) File ¶
func (e *Echo) File(path, file string, m ...MiddlewareFunc) *Route
File registers a new route with path to serve a static file with optional route-level middleware.
func (*Echo) GET ¶
func (e *Echo) GET(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
GET registers a new GET route for a path with matching handler in the router with optional route-level middleware.
func (*Echo) Group ¶
func (e *Echo) Group(prefix string, m ...MiddlewareFunc) (g *Group)
Group creates a new router group with prefix and optional group-level middleware.
func (*Echo) HEAD ¶
func (e *Echo) HEAD(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
HEAD registers a new HEAD route for a path with matching handler in the router with optional route-level middleware.
func (*Echo) Host ¶
func (e *Echo) Host(name string, m ...MiddlewareFunc) (g *Group)
Host creates a new router group for the provided host and optional host-level middleware.
func (*Echo) Match ¶
func (e *Echo) Match(methods []string, path string, handler HandlerFunc, middleware ...MiddlewareFunc) []*Route
Match registers a new route for multiple HTTP methods and path with matching handler in the router with optional route-level middleware.
func (*Echo) NewContext ¶
NewContext returns a Context instance.
func (*Echo) OPTIONS ¶
func (e *Echo) OPTIONS(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
OPTIONS registers a new OPTIONS route for a path with matching handler in the router with optional route-level middleware.
func (*Echo) PATCH ¶
func (e *Echo) PATCH(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
PATCH registers a new PATCH route for a path with matching handler in the router with optional route-level middleware.
func (*Echo) POST ¶
func (e *Echo) POST(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
POST registers a new POST route for a path with matching handler in the router with optional route-level middleware.
func (*Echo) PUT ¶
func (e *Echo) PUT(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
PUT registers a new PUT route for a path with matching handler in the router with optional route-level middleware.
func (*Echo) Pre ¶
func (e *Echo) Pre(middleware ...MiddlewareFunc)
Pre adds middleware to the chain which is run before router.
func (*Echo) ReleaseContext ¶
ReleaseContext returns the `Context` instance back to the pool. You must call it after `AcquireContext()`.
func (*Echo) ServeHTTP ¶
func (e *Echo) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP implements `http.Handler` interface, which serves HTTP requests.
func (*Echo) Shutdown ¶
func (e *Echo) Shutdown(ctx stdContext.Context) error
Shutdown stops the server gracefully. It internally calls `http.Server#Shutdown()`.
func (*Echo) StartAutoTLS ¶
StartAutoTLS starts an HTTPS server using certificates automatically installed from https://letsencrypt.org.
func (*Echo) StartServer ¶
StartServer starts a custom http server.
func (*Echo) StartTLS ¶
StartTLS starts an HTTPS server. If `certFile` or `keyFile` is `string` the values are treated as file paths. If `certFile` or `keyFile` is `[]byte` the values are treated as the certificate or key as-is.
func (*Echo) Static ¶
Static registers a new route with path prefix to serve static files from the provided root directory.
func (*Echo) TRACE ¶
func (e *Echo) TRACE(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
TRACE registers a new TRACE route for a path with matching handler in the router with optional route-level middleware.
func (*Echo) URI ¶
func (e *Echo) URI(handler HandlerFunc, params ...interface{}) string
URI generates a URI from handler.
func (*Echo) URL ¶
func (e *Echo) URL(h HandlerFunc, params ...interface{}) string
URL is an alias for `URI` function.
func (*Echo) Use ¶
func (e *Echo) Use(middleware ...MiddlewareFunc)
Use adds middleware to the chain which is run after router.
type FileBuffer ¶
type FileBuffer struct { // content data Buffer bytes.Buffer Index int64 // contains filtered or unexported fields }
func NewFileBuffer ¶
func NewFileBuffer() FileBuffer
func (*FileBuffer) Bytes ¶
func (fbuffer *FileBuffer) Bytes() []byte
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
Group is a set of sub-routes for a specified route. It can be used for inner routes that share a common middleware or functionality that should be separate from the parent echo instance while still inheriting from it.
func (*Group) Add ¶
func (g *Group) Add(method, path string, handler HandlerFunc, middleware ...MiddlewareFunc) *Route
Add implements `Echo#Add()` for sub-routes within the Group.
func (*Group) Any ¶
func (g *Group) Any(path string, handler HandlerFunc, middleware ...MiddlewareFunc) []*Route
Any implements `Echo#Any()` for sub-routes within the Group.
func (*Group) CONNECT ¶
func (g *Group) CONNECT(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
CONNECT implements `Echo#CONNECT()` for sub-routes within the Group.
func (*Group) DELETE ¶
func (g *Group) DELETE(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
DELETE implements `Echo#DELETE()` for sub-routes within the Group.
func (*Group) GET ¶
func (g *Group) GET(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
GET implements `Echo#GET()` for sub-routes within the Group.
func (*Group) Group ¶
func (g *Group) Group(prefix string, middleware ...MiddlewareFunc) (sg *Group)
Group creates a new sub-group with prefix and optional sub-group-level middleware.
func (*Group) HEAD ¶
func (g *Group) HEAD(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
HEAD implements `Echo#HEAD()` for sub-routes within the Group.
func (*Group) Match ¶
func (g *Group) Match(methods []string, path string, handler HandlerFunc, middleware ...MiddlewareFunc) []*Route
Match implements `Echo#Match()` for sub-routes within the Group.
func (*Group) OPTIONS ¶
func (g *Group) OPTIONS(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
OPTIONS implements `Echo#OPTIONS()` for sub-routes within the Group.
func (*Group) PATCH ¶
func (g *Group) PATCH(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
PATCH implements `Echo#PATCH()` for sub-routes within the Group.
func (*Group) POST ¶
func (g *Group) POST(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
POST implements `Echo#POST()` for sub-routes within the Group.
func (*Group) PUT ¶
func (g *Group) PUT(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
PUT implements `Echo#PUT()` for sub-routes within the Group.
func (*Group) TRACE ¶
func (g *Group) TRACE(path string, h HandlerFunc, m ...MiddlewareFunc) *Route
TRACE implements `Echo#TRACE()` for sub-routes within the Group.
func (*Group) Use ¶
func (g *Group) Use(middleware ...MiddlewareFunc)
Use implements `Echo#Use()` for sub-routes within the Group.
type HTTPError ¶
type HTTPError struct { Code codes.HttpStatusCode Message interface{} Internal error // Stores the error returned by an external dependency }
HTTPError represents an error that occurred while handling a request.
func NewHTTPError ¶
func NewHTTPError(code codes.HttpStatusCode, message ...interface{}) *HTTPError
NewHTTPError creates a new HTTPError instance.
func (*HTTPError) SetInternal ¶
SetInternal sets error to HTTPError.Internal
type HTTPErrorHandler ¶
HTTPErrorHandler is a centralized HTTP error handler.
type HandlerFunc ¶
HandlerFunc defines a function to serve HTTP requests.
func WrapHandler ¶
func WrapHandler(h http.Handler) HandlerFunc
WrapHandler wraps `http.Handler` into `echo.HandlerFunc`.
type HttpContext ¶
type HttpContext struct { Context // contains filtered or unexported fields }
Context represents the Context of the current HTTP request. It holds request and response objects, path, path parameters, data and registered handler.
func (*HttpContext) Attachment ¶
func (c *HttpContext) Attachment(file, name string) error
func (*HttpContext) Bind ¶
func (c *HttpContext) Bind(i interface{}) error
func (*HttpContext) Blob ¶
func (c *HttpContext) Blob(code codes.HttpStatusCode, contentType string, b []byte) (err error)
func (*HttpContext) Cookies ¶
func (c *HttpContext) Cookies() []*http.Cookie
func (*HttpContext) Echo ¶
func (c *HttpContext) Echo() *Echo
func (*HttpContext) Error ¶
func (c *HttpContext) Error(err error)
func (*HttpContext) File ¶
func (c *HttpContext) File(file string) (err error)
func (*HttpContext) FormFile ¶
func (c *HttpContext) FormFile(name string) (*multipart.FileHeader, error)
func (*HttpContext) FormParams ¶
func (c *HttpContext) FormParams() (url.Values, error)
func (*HttpContext) FormValue ¶
func (c *HttpContext) FormValue(name string) string
func (*HttpContext) Get ¶
func (c *HttpContext) Get(key string) interface{}
func (*HttpContext) HTML ¶
func (c *HttpContext) HTML(code codes.HttpStatusCode, html string) (err error)
func (*HttpContext) HTMLBlob ¶
func (c *HttpContext) HTMLBlob(code codes.HttpStatusCode, b []byte) (err error)
func (*HttpContext) Handler ¶
func (c *HttpContext) Handler() HandlerFunc
func (*HttpContext) Inline ¶
func (c *HttpContext) Inline(file, name string) error
func (*HttpContext) JSON ¶
func (c *HttpContext) JSON(code codes.HttpStatusCode, i interface{}) (err error)
custom json encoder
func (*HttpContext) JSONBlob ¶
func (c *HttpContext) JSONBlob(code codes.HttpStatusCode, b []byte) (err error)
func (*HttpContext) JSONP ¶
func (c *HttpContext) JSONP(code codes.HttpStatusCode, callback string, i interface{}) (err error)
func (*HttpContext) JSONPBlob ¶
func (c *HttpContext) JSONPBlob(code codes.HttpStatusCode, callback string, b []byte) (err error)
func (*HttpContext) Logger ¶
func (c *HttpContext) Logger() Logger
func (*HttpContext) MultipartForm ¶
func (c *HttpContext) MultipartForm() (*multipart.Form, error)
func (*HttpContext) NoContent ¶
func (c *HttpContext) NoContent(code codes.HttpStatusCode) error
func (*HttpContext) Param ¶
func (c *HttpContext) Param(name string) string
func (*HttpContext) ParamNames ¶
func (c *HttpContext) ParamNames() []string
func (*HttpContext) ParamValues ¶
func (c *HttpContext) ParamValues() []string
func (*HttpContext) Path ¶
func (c *HttpContext) Path() string
func (*HttpContext) Preload ¶
func (c *HttpContext) Preload(r *http.Request, w http.ResponseWriter)
func (*HttpContext) QueryParam ¶
func (c *HttpContext) QueryParam(name string) string
func (*HttpContext) QueryParams ¶
func (c *HttpContext) QueryParams() url.Values
func (*HttpContext) QueryString ¶
func (c *HttpContext) QueryString() string
func (*HttpContext) RealIP ¶
func (c *HttpContext) RealIP() string
func (*HttpContext) Redirect ¶
func (c *HttpContext) Redirect(code codes.HttpStatusCode, url string) error
func (*HttpContext) Render ¶
func (c *HttpContext) Render(code codes.HttpStatusCode, name string, data interface{}) (err error)
func (*HttpContext) Request ¶
func (c *HttpContext) Request() *http.Request
func (*HttpContext) RequestContentType ¶
func (c *HttpContext) RequestContentType() string
func (*HttpContext) Reset ¶
func (c *HttpContext) Reset()
func (*HttpContext) Response ¶
func (c *HttpContext) Response() *Response
func (*HttpContext) Set ¶
func (c *HttpContext) Set(key string, val interface{})
func (*HttpContext) SetCookie ¶
func (c *HttpContext) SetCookie(cookie *http.Cookie)
func (*HttpContext) SetHandler ¶
func (c *HttpContext) SetHandler(h HandlerFunc)
func (*HttpContext) SetParamNames ¶
func (c *HttpContext) SetParamNames(names ...string)
func (*HttpContext) SetParamValues ¶
func (c *HttpContext) SetParamValues(values ...string)
func (*HttpContext) SetPath ¶
func (c *HttpContext) SetPath(p string)
func (*HttpContext) SetRequest ¶
func (c *HttpContext) SetRequest(r *http.Request)
func (*HttpContext) SplitHostPort ¶
func (c *HttpContext) SplitHostPort(address string) (string, string)
simplistic method that split host and port from string the reason for custom method is to avoid the overhead of net package and its CGO methods
func (*HttpContext) Stream ¶
func (c *HttpContext) Stream(code codes.HttpStatusCode, contentType string, r io.Reader) (err error)
func (*HttpContext) String ¶
func (c *HttpContext) String(code codes.HttpStatusCode, s string) (err error)
func (*HttpContext) WriteContentType ¶
func (c *HttpContext) WriteContentType(value string)
type Logger ¶
type Logger interface { Output() io.Writer SetOutput(w io.Writer) Prefix() string SetPrefix(p string) Level() log.Lvl SetLevel(v log.Lvl) SetHeader(h string) Print(i ...interface{}) Printf(format string, args ...interface{}) Printj(j log.JSON) Debug(i ...interface{}) Debugf(format string, args ...interface{}) Debugj(j log.JSON) Info(i ...interface{}) Infof(format string, args ...interface{}) Infoj(j log.JSON) Warn(i ...interface{}) Warnf(format string, args ...interface{}) Warnj(j log.JSON) Error(i ...interface{}) Errorf(format string, args ...interface{}) Errorj(j log.JSON) Fatal(i ...interface{}) Fatalj(j log.JSON) Fatalf(format string, args ...interface{}) Panic(i ...interface{}) Panicj(j log.JSON) Panicf(format string, args ...interface{}) }
Logger defines the logging interface.
type Map ¶
type Map map[string]interface{}
Map defines a generic map of type `map[string]interface{}`.
type MiddlewareFunc ¶
type MiddlewareFunc func(HandlerFunc) HandlerFunc
MiddlewareFunc defines a function to process middleware.
func WrapMiddleware ¶
func WrapMiddleware(m func(http.Handler) http.Handler) MiddlewareFunc
WrapMiddleware wraps `func(http.Handler) http.Handler` into `echo.MiddlewareFunc`
type Response ¶
type Response struct { Writer http.ResponseWriter Status codes.HttpStatusCode Size int64 Committed bool // contains filtered or unexported fields }
Response wraps an http.ResponseWriter and implements its interface to be used by an HTTP handler to construct an HTTP response. See: https://golang.org/pkg/net/http/#ResponseWriter
func NewResponse ¶
func NewResponse(w http.ResponseWriter, e *Echo) (r *Response)
NewResponse creates a new instance of Response.
func (*Response) After ¶
func (r *Response) After(fn func())
After registers a function which is called just after the response is written. If the `Content-Length` is unknown, none of the after function is executed.
func (*Response) Before ¶
func (r *Response) Before(fn func())
Before registers a function which is called just before the response is written.
func (*Response) Flush ¶
func (r *Response) Flush()
Flush implements the http.Flusher interface to allow an HTTP handler to flush buffered data to the client. See http.Flusher(https://golang.org/pkg/net/http/#Flusher)
func (*Response) Header ¶
Header returns the header map for the writer that will be sent by WriteHeader. Changing the header after a call to WriteHeader (or Write) has no effect unless the modified headers were declared as trailers by setting the "Trailer" header before the call to WriteHeader (see example) To suppress implicit response headers, set their value to nil. Example: https://golang.org/pkg/net/http/#example_ResponseWriter_trailers
func (*Response) Hijack ¶
Hijack implements the http.Hijacker interface to allow an HTTP handler to take over the connection. See http.Hijacker(https://golang.org/pkg/net/http/#Hijacker)
func (*Response) WriteHeaderCode ¶
func (r *Response) WriteHeaderCode(code codes.HttpStatusCode)
WriteHeader sends an HTTP response header with status code. If WriteHeader is not called explicitly, the first call to Write will trigger an implicit WriteHeader(codes.StatusOK). Thus explicit calls to WriteHeader are mainly used to send error codes.
type Route ¶
type Route struct { Method string `json:"method"` Path string `json:"path"` Name string `json:"name"` }
Route contains a handler and information for matching against requests.
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
Router is the registry of all registered routes for an `Echo` instance for request matching and URL path parameter parsing.
func (*Router) Add ¶
func (r *Router) Add(method, path string, h HandlerFunc)
Add registers a new route for method and path with matching handler.