README

Tango 简体中文

CircleCI codecov

Tango Logo

Package tango is a micro & pluggable web framework for Go.

Current version: v0.5.0 Version History

Getting Started

To install Tango:

go get github.com/lunny/tango

A classic usage of Tango below:

package main

import (
    "errors"
    "github.com/lunny/tango"
)

type Action struct {
    tango.JSON
}

func (Action) Get() interface{} {
    if true {
        return map[string]string{
            "say": "Hello tango!",
        }
    }
    return errors.New("something error")
}

func main() {
    t := tango.Classic()
    t.Get("/", new(Action))
    t.Run()
}

Then visit http://localhost:8000 on your browser. You will get

{"say":"Hello tango!"}

If you change true after if to false, then you will get

{"err":"something error"}

This code will automatically convert returned map or error to a json because we has an embedded struct tango.JSON.

Features

  • Powerful routing & Flexible routes combinations.
  • Directly integrate with existing services.
  • Easy to plugin features with modular design.
  • High performance dependency injection embedded.

Middlewares

Middlewares allow you easily plugin features for your Tango applications.

There are already many middlewares to simplify your work:

Documentation

Discuss

Cases

License

This project is under BSD License. See the LICENSE file for the full license text.

Documentation

Index

Constants

View Source
const (
	HeaderAcceptEncoding  = "Accept-Encoding"
	HeaderContentEncoding = "Content-Encoding"
	HeaderContentLength   = "Content-Length"
	HeaderContentType     = "Content-Type"
	HeaderVary            = "Vary"
)

some http headers

Variables

View Source
var (
	SupportMethods = []string{
		"GET",
		"POST",
		"HEAD",
		"DELETE",
		"PUT",
		"OPTIONS",
		"TRACE",
		"PATCH",
	}

	PoolSize = 10
)

enumerates all supported HTTP methods

View Source
var (
	// ClassicHandlers the default handlers
	ClassicHandlers = []Handler{
		Logging(),
		Recovery(false),
		Compresses([]string{}),
		Static(StaticOptions{Prefix: "public"}),
		Return(),
		Param(),
		Contexts(),
	}
)

Functions

func Dir

func Dir(dir string) func(ctx *Context)

Dir returns a handle to serve a directory

func File

func File(path string) func(ctx *Context)

File returns a handle to serve a file

func NewCookie

func NewCookie(name string, value string, age ...int64) *http.Cookie

NewCookie return a http.Cookie via give name and value

func NewSecureCookie

func NewSecureCookie(secret, name string, val string, age ...int64) *http.Cookie

NewSecureCookie generates a new secure cookie

func Version

func Version() string

Version returns tango's version

Types

type AbortError

type AbortError interface {
	error
	Code() int
}

AbortError defines an interface to describe HTTP error

func Abort

func Abort(code int, content ...string) AbortError

Abort returns an AbortError

func Forbidden

func Forbidden(content ...string) AbortError

Forbidden returns forbidden HTTP error

func InternalServerError

func InternalServerError(content ...string) AbortError

InternalServerError returns internal server HTTP error

func NotFound

func NotFound(content ...string) AbortError

NotFound returns not found HTTP error

func NotSupported

func NotSupported(content ...string) AbortError

NotSupported returns not supported HTTP error

func Unauthorized

func Unauthorized(content ...string) AbortError

Unauthorized returns unauthorized HTTP error

type CompositeLogger

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

CompositeLogger defines a composite loggers

func (*CompositeLogger) Debug

func (l *CompositeLogger) Debug(v ...interface{})

Debug implementes Logger interface

func (*CompositeLogger) Debugf

func (l *CompositeLogger) Debugf(format string, v ...interface{})

Debugf implementes Logger interface

func (*CompositeLogger) Error

func (l *CompositeLogger) Error(v ...interface{})

Error implementes Logger interface

func (*CompositeLogger) Errorf

func (l *CompositeLogger) Errorf(format string, v ...interface{})

Errorf implementes Logger interface

func (*CompositeLogger) Info

func (l *CompositeLogger) Info(v ...interface{})

Info implementes Logger interface

func (*CompositeLogger) Infof

func (l *CompositeLogger) Infof(format string, v ...interface{})

Infof implementes Logger interface

func (*CompositeLogger) Warn

func (l *CompositeLogger) Warn(v ...interface{})

Warn implementes Logger interface

func (*CompositeLogger) Warnf

func (l *CompositeLogger) Warnf(format string, v ...interface{})

Warnf implementes Logger interface

type Compress

type Compress struct{}

Compress implements auto Compresser

func (Compress) CompressType

func (Compress) CompressType() string

CompressType returns compress type

type Compresser

type Compresser interface {
	CompressType() string
}

Compresser defines the interface return compress type

type Context

type Context struct {
	Logger

	ResponseWriter

	Result interface{}
	// contains filtered or unexported fields
}

Context defines request and response context

func (*Context) Abort

func (ctx *Context) Abort(status int, body ...string)

Abort is a helper method that sends an HTTP header and an optional body. It is useful for returning 4xx or 5xx errors. Once it has been called, any return value from the handler will not be written to the response.

func (*Context) Action

func (ctx *Context) Action() interface{}

Action returns action

func (*Context) ActionTag

func (ctx *Context) ActionTag(fieldName string) string

ActionTag returns field tag on action struct TODO: cache the name

func (*Context) ActionValue

func (ctx *Context) ActionValue() reflect.Value

ActionValue returns action value

func (*Context) Body

func (ctx *Context) Body() ([]byte, error)

Body returns body's content

func (*Context) Cookie

func (ctx *Context) Cookie(key string, defaults ...string) string

Cookie returns cookie as string with default

func (*Context) CookieBool

func (ctx *Context) CookieBool(key string, defaults ...bool) bool

CookieBool returns cookie as bool with default

func (*Context) CookieEscape

func (ctx *Context) CookieEscape(key string, defaults ...string) string

CookieEscape returns cookie as escaped string with default

func (*Context) CookieFloat32

func (ctx *Context) CookieFloat32(key string, defaults ...float32) float32

CookieFloat32 returns cookie as float32 with default

func (*Context) CookieFloat64

func (ctx *Context) CookieFloat64(key string, defaults ...float64) float64

CookieFloat64 returns cookie as float64 with default

func (*Context) CookieInt

func (ctx *Context) CookieInt(key string, defaults ...int) int

CookieInt returns cookie as int with default

func (*Context) CookieInt32

func (ctx *Context) CookieInt32(key string, defaults ...int32) int32

CookieInt32 returns cookie as int32 with default

func (*Context) CookieInt64

func (ctx *Context) CookieInt64(key string, defaults ...int64) int64

CookieInt64 returns cookie as int64 with default

func (*Context) CookieUint

func (ctx *Context) CookieUint(key string, defaults ...uint) uint

CookieUint returns cookie as uint with default

func (*Context) CookieUint32

func (ctx *Context) CookieUint32(key string, defaults ...uint32) uint32

CookieUint32 returns cookie as uint32 with default

func (*Context) CookieUint64

func (ctx *Context) CookieUint64(key string, defaults ...uint64) uint64

CookieUint64 returns cookie as uint64 with default

func (*Context) Cookies

func (ctx *Context) Cookies() Cookies

Cookies returns the cookies

func (*Context) DecodeJSON

func (ctx *Context) DecodeJSON(obj interface{}) error

DecodeJSON decodes body as JSON format to obj

func (*Context) DecodeJson

func (ctx *Context) DecodeJson(obj interface{}) error

DecodeJson decodes body as JSON format to obj Deprecated: use DecodeJSON instead

func (*Context) DecodeXML

func (ctx *Context) DecodeXML(obj interface{}) error

DecodeXML decodes body as XML format to obj

func (*Context) DecodeXml

func (ctx *Context) DecodeXml(obj interface{}) error

DecodeXml decodes body as XML format to obj Deprecated: use DecodeXML instead

func (*Context) Download

func (ctx *Context) Download(fpath string) error

Download provides a locale file to http client

func (*Context) Form

func (ctx *Context) Form(key string, defaults ...string) string

Form returns request form as string with default

func (*Context) FormBool

func (ctx *Context) FormBool(key string, defaults ...bool) bool

FormBool returns request form as bool with default

func (*Context) FormEscape

func (ctx *Context) FormEscape(key string, defaults ...string) string

FormEscape returns request form as escaped string with default

func (*Context) FormFloat32

func (ctx *Context) FormFloat32(key string, defaults ...float32) float32

FormFloat32 returns request form as float32 with default

func (*Context) FormFloat64

func (ctx *Context) FormFloat64(key string, defaults ...float64) float64

FormFloat64 returns request form as float64 with default

func (*Context) FormInt

func (ctx *Context) FormInt(key string, defaults ...int) int

FormInt returns request form as int with default

func (*Context) FormInt32

func (ctx *Context) FormInt32(key string, defaults ...int32) int32

FormInt32 returns request form as int32 with default

func (*Context) FormInt64

func (ctx *Context) FormInt64(key string, defaults ...int64) int64

FormInt64 returns request form as int64 with default

func (*Context) FormStrings

func (ctx *Context) FormStrings(key string, defaults ...[]string) []string

FormStrings returns request form as strings with default

func (*Context) FormUint

func (ctx *Context) FormUint(key string, defaults ...uint) uint

FormUint returns request form as uint with default

func (*Context) FormUint32

func (ctx *Context) FormUint32(key string, defaults ...uint32) uint32

FormUint32 returns request form as uint32 with default

func (*Context) FormUint64

func (ctx *Context) FormUint64(key string, defaults ...uint64) uint64

FormUint64 returns request form as uint64 with default

func (*Context) Forms

func (ctx *Context) Forms() *Forms

Forms returns the query/body names and values

func (*Context) HandleError

func (ctx *Context) HandleError()

HandleError handles errors

func (*Context) IP

func (ctx *Context) IP() string

IP returns remote IP

func (*Context) IsAjax

func (ctx *Context) IsAjax() bool

IsAjax returns if the request is an ajax request

func (*Context) Next

func (ctx *Context) Next()

Next call next middleware or action WARNING: don't invoke this method on action

func (*Context) NotFound

func (ctx *Context) NotFound(message ...string)

NotFound writes a 404 HTTP response

func (*Context) NotModified

func (ctx *Context) NotModified()

NotModified writes a 304 HTTP response

func (*Context) Param

func (ctx *Context) Param(key string, defaults ...string) string

Param returns request form as string with default

func (*Context) ParamBool

func (ctx *Context) ParamBool(key string, defaults ...bool) bool

ParamBool returns request form as bool with default

func (*Context) ParamEscape

func (ctx *Context) ParamEscape(key string, defaults ...string) string

ParamEscape returns request form as escaped string with default

func (*Context) ParamFloat32

func (ctx *Context) ParamFloat32(key string, defaults ...float32) float32

ParamFloat32 returns request form as float32 with default

func (*Context) ParamFloat64

func (ctx *Context) ParamFloat64(key string, defaults ...float64) float64

ParamFloat64 returns request form as float64 with default

func (*Context) ParamInt

func (ctx *Context) ParamInt(key string, defaults ...int) int

ParamInt returns request form as int with default

func (*Context) ParamInt32

func (ctx *Context) ParamInt32(key string, defaults ...int32) int32

ParamInt32 returns request form as int32 with default

func (*Context) ParamInt64

func (ctx *Context) ParamInt64(key string, defaults ...int64) int64

ParamInt64 returns request form as int64 with default

func (*Context) ParamStrings

func (ctx *Context) ParamStrings(key string, defaults ...[]string) []string

ParamStrings returns request form as slice of string with default

func (*Context) ParamUint

func (ctx *Context) ParamUint(key string, defaults ...uint) uint

ParamUint returns request form as uint with default

func (*Context) ParamUint32

func (ctx *Context) ParamUint32(key string, defaults ...uint32) uint32

ParamUint32 returns request form as uint32 with default

func (*Context) ParamUint64

func (ctx *Context) ParamUint64(key string, defaults ...uint64) uint64

ParamUint64 returns request form as uint64 with default

func (*Context) Params

func (ctx *Context) Params() *Params

Params returns the URL params

func (*Context) Queries

func (ctx *Context) Queries() *Queries

Queries returns the query names and values

func (*Context) Query

func (ctx *Context) Query(key string, defaults ...string) string

Query returns request form as string with default

func (*Context) QueryBool

func (ctx *Context) QueryBool(key string, defaults ...bool) bool

FormBool returns request form as bool with default

func (*Context) QueryEscape

func (ctx *Context) QueryEscape(key string, defaults ...string) string

QueryEscape returns request form as escaped string with default

func (*Context) QueryFloat32

func (ctx *Context) QueryFloat32(key string, defaults ...float32) float32

QueryFloat32 returns request form as float32 with default

func (*Context) QueryFloat64

func (ctx *Context) QueryFloat64(key string, defaults ...float64) float64

FormFloat64 returns request form as float64 with default

func (*Context) QueryInt

func (ctx *Context) QueryInt(key string, defaults ...int) int

QueryInt returns request form as int with default

func (*Context) QueryInt32

func (ctx *Context) QueryInt32(key string, defaults ...int32) int32

QueryInt32 returns request form as int32 with default

func (*Context) QueryInt64

func (ctx *Context) QueryInt64(key string, defaults ...int64) int64

QueryInt64 returns request form as int64 with default

func (*Context) QueryStrings

func (ctx *Context) QueryStrings(key string, defaults ...[]string) []string

QueryStrings returns request form as strings with default

func (*Context) QueryUint

func (ctx *Context) QueryUint(key string, defaults ...uint) uint

QueryUint returns request form as uint with default

func (*Context) QueryUint32

func (ctx *Context) QueryUint32(key string, defaults ...uint32) uint32

QueryUint32 returns request form as uint32 with default

func (*Context) QueryUint64

func (ctx *Context) QueryUint64(key string, defaults ...uint64) uint64

QueryUint64 returns request form as uint64 with default

func (*Context) Redirect

func (ctx *Context) Redirect(url string, status ...int)

Redirect redirects the request to another URL

func (*Context) Req

func (ctx *Context) Req() *http.Request

Req returns current HTTP Request information

func (*Context) Route

func (ctx *Context) Route() *Route

Route returns route

func (*Context) SaveToFile

func (ctx *Context) SaveToFile(formName, savePath string) error

SaveToFile saves the HTTP post file form to local file path

func (*Context) SecureCookies

func (ctx *Context) SecureCookies(secret string) Cookies

SecureCookies generates a secret cookie

func (*Context) ServeContent

func (ctx *Context) ServeContent(path string, fileSystem http.FileSystem) error

ServeContent serve content

func (*Context) ServeFile

func (ctx *Context) ServeFile(path string) error

ServeFile serves a file

func (*Context) ServeJSON

func (ctx *Context) ServeJSON(obj interface{}) error

ServeJSON serves marshaled JSON content from obj

func (*Context) ServeJson

func (ctx *Context) ServeJson(obj interface{}) error

ServeJson serves marshaled JSON content from obj Deprecated: use ServeJSON instead

func (*Context) ServeXML

func (ctx *Context) ServeXML(obj interface{}) error

ServeXML serves marshaled XML content from obj

func (*Context) ServeXml

func (ctx *Context) ServeXml(obj interface{}) error

ServeXml serves marshaled XML content from obj Deprecated: use ServeXML instead

func (*Context) SetRequest

func (ctx *Context) SetRequest(req *http.Request)

SetRequest sets the request to context

func (*Context) Unauthorized

func (ctx *Context) Unauthorized()

Unauthorized writes a 401 HTTP response

func (*Context) WriteString

func (ctx *Context) WriteString(content string) (int, error)

WriteString writes a string to response write

type Contexter

type Contexter interface {
	SetContext(*Context)
}

Contexter describes an interface to set *Context

type Cookies

type Cookies interface {
	Set
	Get(string) *http.Cookie
	Set(*http.Cookie)
	Expire(string, time.Time)
	Del(string)
}

Cookies describes cookie interface

type Ctx

type Ctx struct {
	*Context
}

Ctx implements Contexter

func (*Ctx) SetContext

func (c *Ctx) SetContext(ctx *Context)

SetContext set *Context to action struct

type Deflate

type Deflate struct{}

Deflate implements deflate Compresser

func (Deflate) CompressType

func (Deflate) CompressType() string

CompressType returns compress type

type ErrorKeyIsNotExist

type ErrorKeyIsNotExist struct {
	Key string
}

func (ErrorKeyIsNotExist) Error

func (e ErrorKeyIsNotExist) Error() string

type ErrorWithCode

type ErrorWithCode interface {
	error
	ErrorCode() int
}

ErrorWithCode descripts an error that with error code

type Forms

type Forms http.Request

Forms a new enhancement of http.Request

func (*Forms) Bool

func (f *Forms) Bool(key string) (bool, error)

Bool returns request form as bool

func (*Forms) Escape

func (f *Forms) Escape(key string) (string, error)

Escape returns request form as escaped string

func (*Forms) Float32

func (f *Forms) Float32(key string) (float32, error)

Float32 returns request form as float32

func (*Forms) Float64

func (f *Forms) Float64(key string) (float64, error)

Float64 returns request form as float64

func (*Forms) Int

func (f *Forms) Int(key string) (int, error)

Int returns request form as int

func (*Forms) Int32

func (f *Forms) Int32(key string) (int32, error)

Int32 returns request form as int32

func (*Forms) Int64

func (f *Forms) Int64(key string) (int64, error)

Int64 returns request form as int64

func (*Forms) MustBool

func (f *Forms) MustBool(key string, defaults ...bool) bool

MustBool returns request form as bool with default

func (*Forms) MustEscape

func (f *Forms) MustEscape(key string, defaults ...string) string

MustEscape returns request form as escaped string with default

func (*Forms) MustFloat32

func (f *Forms) MustFloat32(key string, defaults ...float32) float32

MustFloat32 returns request form as float32 with default

func (*Forms) MustFloat64

func (f *Forms) MustFloat64(key string, defaults ...float64) float64

MustFloat64 returns request form as float64 with default

func (*Forms) MustInt

func (f *Forms) MustInt(key string, defaults ...int) int

MustInt returns request form as int with default

func (*Forms) MustInt32

func (f *Forms) MustInt32(key string, defaults ...int32) int32

MustInt32 returns request form as int32 with default

func (*Forms) MustInt64

func (f *Forms) MustInt64(key string, defaults ...int64) int64

MustInt64 returns request form as int64 with default

func (*Forms) MustString

func (f *Forms) MustString(key string, defaults ...string) string

MustString returns request form as string with default

func (*Forms) MustStrings

func (f *Forms) MustStrings(key string, defaults ...[]string) []string

MustStrings returns request form as strings with default

func (*Forms) MustUint

func (f *Forms) MustUint(key string, defaults ...uint) uint

MustUint returns request form as uint with default

func (*Forms) MustUint32

func (f *Forms) MustUint32(key string, defaults ...uint32) uint32

MustUint32 returns request form as uint32 with default

func (*Forms) MustUint64

func (f *Forms) MustUint64(key string, defaults ...uint64) uint64

MustUint64 returns request form as uint64 with default

func (*Forms) String

func (f *Forms) String(key string) (string, error)

String returns request form as string

func (*Forms) Strings

func (f *Forms) Strings(key string) ([]string, error)

Strings returns request form as strings

func (*Forms) Uint

func (f *Forms) Uint(key string) (uint, error)

Uint returns request form as uint

func (*Forms) Uint32

func (f *Forms) Uint32(key string) (uint32, error)

Uint32 returns request form as uint32

func (*Forms) Uint64

func (f *Forms) Uint64(key string) (uint64, error)

Uint64 returns request form as uint64

func (*Forms) Values

func (f *Forms) Values() url.Values

Values returns http.Request values

type GZip

type GZip struct{}

GZip implements gzip Compresser

func (GZip) CompressType

func (GZip) CompressType() string

CompressType returns compress type

type Group

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

Group defines a route group

func NewGroup

func NewGroup() *Group

NewGroup creates a route group

func (*Group) Any

func (g *Group) Any(url string, c interface{}, middlewares ...Handler)

Any addes the default mehtods route to this group

func (*Group) Delete

func (g *Group) Delete(url string, c interface{}, middlewares ...Handler)

Delete addes a DELETE route to this group

func (*Group) Get

func (g *Group) Get(url string, c interface{}, middlewares ...Handler)

Get addes a GET route to this group

func (*Group) Group

func (g *Group) Group(p string, o interface{})

Group defines group's child group

func (*Group) Head

func (g *Group) Head(url string, c interface{}, middlewares ...Handler)

Head addes a HEAD route to this group

func (*Group) Options

func (g *Group) Options(url string, c interface{}, middlewares ...Handler)

Options addes a OPTIONS route to this group

func (*Group) Patch

func (g *Group) Patch(url string, c interface{}, middlewares ...Handler)

Patch addes a PATCH route to this group

func (*Group) Post

func (g *Group) Post(url string, c interface{}, middlewares ...Handler)

Post addes a POST route to this group

func (*Group) Put

func (g *Group) Put(url string, c interface{}, middlewares ...Handler)

Put addes a PUT route to this group

func (*Group) Route

func (g *Group) Route(methods interface{}, url string, c interface{}, middlewares ...Handler)

Route defines a customerize route to this group

func (*Group) Trace

func (g *Group) Trace(url string, c interface{}, middlewares ...Handler)

Trace addes a TRACE route to this group

func (*Group) Use

func (g *Group) Use(handlers ...Handler)

Use set the middlewares to apply to this group's routes

type Handler

type Handler interface {
	Handle(*Context)
}

Handler defines middleware interface

type HandlerFunc

type HandlerFunc func(ctx *Context)

HandlerFunc describes the handle function

func Compresses

func Compresses(exts []string) HandlerFunc

Compresses defines a middleware to compress HTTP response

func Contexts

func Contexts() HandlerFunc

Contexts returns a middleware to inject Context to action struct

func Errors

func Errors() HandlerFunc

Errors returns default errorhandler, you can use your self handler

func Logging

func Logging() HandlerFunc

Logging returns handler to log informations

func Param

func Param() HandlerFunc

Param returns params handle to operate param

func Prefix

func Prefix(prefix string, handler Handler) HandlerFunc

Prefix provides a middleware to wrap another middleware with a prefix URL TODO: regex prefix

func Recovery

func Recovery(debug bool) HandlerFunc

Recovery returns a middleware which catch panics and log them

func Return

func Return() HandlerFunc

Return returns a tango middleware to handler return values

func Static

func Static(opts ...StaticOptions) HandlerFunc

Static return a middleware for serving static files

func WrapAfter

func WrapAfter(handler http.Handler) HandlerFunc

WrapAfter wraps a http standard handler to tango's after action executes

func WrapBefore

func WrapBefore(handler http.Handler) HandlerFunc

WrapBefore wraps a http standard handler to tango's before action executes

func (HandlerFunc) Handle

func (h HandlerFunc) Handle(ctx *Context)

Handle executes the handler

type JSON

type JSON struct{}

JSON describes return JSON type

func (JSON) ResponseType

func (JSON) ResponseType() int

ResponseType implementes ResponseTyper

type Json

type Json struct{}

Json describes return JSON type Deprecated: use JSON instead

func (Json) ResponseType

func (Json) ResponseType() int

ResponseType implementes ResponseTyper

type Log

type Log struct {
	Logger
}

Log implementes LogInterface

func (*Log) SetLogger

func (l *Log) SetLogger(log Logger)

SetLogger implementes LogInterface

type LogInterface

type LogInterface interface {
	SetLogger(Logger)
}

LogInterface defines logger interface to inject logger to struct

type Logger

type Logger interface {
	Debugf(format string, v ...interface{})
	Debug(v ...interface{})
	Infof(format string, v ...interface{})
	Info(v ...interface{})
	Warnf(format string, v ...interface{})
	Warn(v ...interface{})
	Errorf(format string, v ...interface{})
	Error(v ...interface{})
}

Logger defines the logger interface for tango use

func NewCompositeLogger

func NewCompositeLogger(logs ...Logger) Logger

NewCompositeLogger creates a composite loggers

func NewLogger

func NewLogger(out io.Writer) Logger

NewLogger use the default logger with special writer

type Paramer

type Paramer interface {
	SetParams([]param)
}

Paramer defines an interface to get params

type Params

type Params []param

Params defines params of http request

func (*Params) Bool

func (p *Params) Bool(key string) (bool, error)

Bool returns request form as bool

func (*Params) Escape

func (p *Params) Escape(key string) (string, error)

Escape returns request form as escaped string

func (*Params) Float32

func (p *Params) Float32(key string) (float32, error)

Float32 returns request form as float32

func (*Params) Float64

func (p *Params) Float64(key string) (float64, error)

Float64 returns request form as float64

func (*Params) Get

func (p *Params) Get(key string) string

Get returns request form as string

func (*Params) Int

func (p *Params) Int(key string) (int, error)

Int returns request form as int

func (*Params) Int32

func (p *Params) Int32(key string) (int32, error)

Int32 returns request form as int32

func (*Params) Int64

func (p *Params) Int64(key string) (int64, error)

Int64 returns request form as int64

func (*Params) MustBool

func (p *Params) MustBool(key string, defaults ...bool) bool

MustBool returns request form as bool with default

func (*Params) MustEscape

func (p *Params) MustEscape(key string, defaults ...string) string

MustEscape returns request form as escaped string with default

func (*Params) MustFloat32

func (p *Params) MustFloat32(key string, defaults ...float32) float32

MustFloat32 returns request form as float32 with default

func (*Params) MustFloat64

func (p *Params) MustFloat64(key string, defaults ...float64) float64

MustFloat64 returns request form as float64 with default

func (*Params) MustInt

func (p *Params) MustInt(key string, defaults ...int) int

MustInt returns request form as int with default

func (*Params) MustInt32

func (p *Params) MustInt32(key string, defaults ...int32) int32

MustInt32 returns request form as int32 with default

func (*Params) MustInt64

func (p *Params) MustInt64(key string, defaults ...int64) int64

MustInt64 returns request form as int64 with default

func (*Params) MustString

func (p *Params) MustString(key string, defaults ...string) string

MustString returns request form as slice of string with default

func (*Params) MustStrings

func (p *Params) MustStrings(key string, defaults ...[]string) []string

MustStrings returns request form as slice of string with default

func (*Params) MustUint

func (p *Params) MustUint(key string, defaults ...uint) uint

MustUint returns request form as uint with default

func (*Params) MustUint32

func (p *Params) MustUint32(key string, defaults ...uint32) uint32

MustUint32 returns request form as uint32 with default

func (*Params) MustUint64

func (p *Params) MustUint64(key string, defaults ...uint64) uint64

MustUint64 returns request form as uint64 with default

func (*Params) Set

func (p *Params) Set(key, value string)

Set sets key/value to params

func (*Params) SetParams

func (p *Params) SetParams(params []param)

SetParams implemented Paramer

func (*Params) String

func (p *Params) String(key string) (string, error)

String returns request form as string

func (*Params) Strings

func (p *Params) Strings(key string) ([]string, error)

Strings returns request form as slice of string

func (*Params) Uint

func (p *Params) Uint(key string) (uint, error)

Uint returns request form as uint

func (*Params) Uint32

func (p *Params) Uint32(key string) (uint32, error)

Uint32 returns request form as uint32

func (*Params) Uint64

func (p *Params) Uint64(key string) (uint64, error)

Uint64 returns request form as uint64

type Queries

type Queries http.Request

Queries a new enhancement of http.Request

func (*Queries) Bool

func (f *Queries) Bool(key string) (bool, error)

Bool returns request form as bool

func (*Queries) Escape

func (f *Queries) Escape(key string) (string, error)

Escape returns request form as escaped string

func (*Queries) Float32

func (f *Queries) Float32(key string) (float32, error)

Float32 returns request form as float32

func (*Queries) Float64

func (f *Queries) Float64(key string) (float64, error)

Float64 returns request form as float64

func (*Queries) Int

func (f *Queries) Int(key string) (int, error)

Int returns request form as int

func (*Queries) Int32

func (f *Queries) Int32(key string) (int32, error)

Int32 returns request form as int32

func (*Queries) Int64

func (f *Queries) Int64(key string) (int64, error)

Int64 returns request form as int64

func (*Queries) MustBool

func (f *Queries) MustBool(key string, defaults ...bool) bool

MustBool returns request form as bool with default

func (*Queries) MustEscape

func (f *Queries) MustEscape(key string, defaults ...string) string

MustEscape returns request form as escaped string with default

func (*Queries) MustFloat32

func (f *Queries) MustFloat32(key string, defaults ...float32) float32

MustFloat32 returns request form as float32 with default

func (*Queries) MustFloat64

func (f *Queries) MustFloat64(key string, defaults ...float64) float64

MustFloat64 returns request form as float64 with default

func (*Queries) MustInt

func (f *Queries) MustInt(key string, defaults ...int) int

MustInt returns request form as int with default

func (*Queries) MustInt32

func (f *Queries) MustInt32(key string, defaults ...int32) int32

MustInt32 returns request form as int32 with default

func (*Queries) MustInt64

func (f *Queries) MustInt64(key string, defaults ...int64) int64

MustInt64 returns request form as int64 with default

func (*Queries) MustString

func (f *Queries) MustString(key string, defaults ...string) string

MustString returns request form as string with default

func (*Queries) MustStrings

func (f *Queries) MustStrings(key string, defaults ...[]string) []string

MustStrings returns request form as strings with default

func (*Queries) MustUint

func (f *Queries) MustUint(key string, defaults ...uint) uint

MustUint returns request form as uint with default

func (*Queries) MustUint32

func (f *Queries) MustUint32(key string, defaults ...uint32) uint32

MustUint32 returns request form as uint32 with default

func (*Queries) MustUint64

func (f *Queries) MustUint64(key string, defaults ...uint64) uint64

MustUint64 returns request form as uint64 with default

func (*Queries) String

func (f *Queries) String(key string) (string, error)

String returns request form as string

func (*Queries) Strings

func (f *Queries) Strings(key string) ([]string, error)

Strings returns request form as strings

func (*Queries) Uint

func (f *Queries) Uint(key string) (uint, error)

Uint returns request form as uint

func (*Queries) Uint32

func (f *Queries) Uint32(key string) (uint32, error)

Uint32 returns request form as uint32

func (*Queries) Uint64

func (f *Queries) Uint64(key string) (uint64, error)

Uint64 returns request form as uint64

func (*Queries) Values

func (f *Queries) Values() url.Values

Values returns http.Request values

type ResponseTyper

type ResponseTyper interface {
	ResponseType() int
}

ResponseTyper describes reponse type

type ResponseWriter

type ResponseWriter interface {
	http.ResponseWriter
	http.Flusher
	http.Hijacker
	// Status returns the status code of the response or 0 if the response has not been written.
	Status() int
	// Written returns whether or not the ResponseWriter has been written.
	Written() bool
	// Size returns the size of the response body.
	Size() int
}

ResponseWriter is a wrapper around http.ResponseWriter that provides extra information about the response. It is recommended that middleware handlers use this construct to wrap a responsewriter if the functionality calls for it.

type Route

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

Route defines HTTP route

func NewRoute

func NewRoute(v interface{}, t reflect.Type,
	method reflect.Value, tp RouteType, handlers []Handler) *Route

NewRoute returns a route

func (*Route) IsStruct

func (r *Route) IsStruct() bool

IsStruct returns if the execute is a struct

func (*Route) Method

func (r *Route) Method() reflect.Value

Method returns finalize execute method.

func (*Route) Raw

func (r *Route) Raw() interface{}

Raw returns raw data to define route.

func (*Route) RouteType

func (r *Route) RouteType() RouteType

RouteType returns route type.

type RouteType

type RouteType byte

RouteType defines route types

const (
	FuncRoute         RouteType = iota + 1 // 1 func ()
	FuncHTTPRoute                          // 2 func (http.ResponseWriter, *http.Request)
	FuncReqRoute                           // 3 func (*http.Request)
	FuncResponseRoute                      // 4 func (http.ResponseWriter)
	FuncCtxRoute                           // 5 func (*tango.Context)
	StructRoute                            // 6 func (st) <Get>()
	StructPtrRoute                         // 7 func (*struct) <Get>()
)

enumerates route types

type Router

type Router interface {
	Route(methods interface{}, path string, handler interface{}, middlewares ...Handler)
	Match(requestPath, method string) (*Route, Params)
}

Router describes the interface of route

type Set

type Set interface {
	String(key string) (string, error)
	Int(key string) (int, error)
	Int32(key string) (int32, error)
	Int64(key string) (int64, error)
	Uint(key string) (uint, error)
	Uint32(key string) (uint32, error)
	Uint64(key string) (uint64, error)
	Float32(key string) (float32, error)
	Float64(key string) (float64, error)
	Bool(key string) (bool, error)

	MustString(key string, defaults ...string) string
	MustEscape(key string, defaults ...string) string
	MustInt(key string, defaults ...int) int
	MustInt32(key string, defaults ...int32) int32
	MustInt64(key string, defaults ...int64) int64
	MustUint(key string, defaults ...uint) uint
	MustUint32(key string, defaults ...uint32) uint32
	MustUint64(key string, defaults ...uint64) uint64
	MustFloat32(key string, defaults ...float32) float32
	MustFloat64(key string, defaults ...float64) float64
	MustBool(key string, defaults ...bool) bool
}

Set describes a set interface

type StaticOptions

type StaticOptions struct {
	RootPath   string
	Prefix     string
	IndexFiles []string
	ListDir    bool
	FilterExts []string
	// FileSystem is the interface for supporting any implmentation of file system.
	FileSystem http.FileSystem
}

StaticOptions defines Static middleware's options

func (*StaticOptions) IsFilterExt

func (s *StaticOptions) IsFilterExt(rPath string) bool

IsFilterExt decribes if rPath's ext match filter ext

type StatusResult

type StatusResult struct {
	Code   int
	Result interface{}
}

StatusResult describes http response

type Tango

type Tango struct {
	http.Server
	Router

	ErrHandler Handler
	// contains filtered or unexported fields
}

Tango describes tango object

func Classic

func Classic(l ...Logger) *Tango

Classic returns the tango with default handlers and logger

func New

func New(handlers ...Handler) *Tango

New creates tango with the default logger and handlers

func NewWithLog

func NewWithLog(logger Logger, handlers ...Handler) *Tango

NewWithLog creates tango with the special logger and handlers

func (*Tango) Any

func (t *Tango) Any(url string, c interface{}, middlewares ...Handler)

Any sets a route every support method is OK.

func (*Tango) Delete

func (t *Tango) Delete(url string, c interface{}, middlewares ...Handler)

Delete sets a route with DELETE method

func (*Tango) Get

func (t *Tango) Get(url string, c interface{}, middlewares ...Handler)

Get sets a route with GET method

func (*Tango) Group

func (t *Tango) Group(p string, o interface{})

Group adds routines groups

func (*Tango) Head

func (t *Tango) Head(url string, c interface{}, middlewares ...Handler)

Head sets a route with HEAD method

func (*Tango) Logger

func (t *Tango) Logger() Logger

Logger returns logger interface

func (*Tango) Options

func (t *Tango) Options(url string, c interface{}, middlewares ...Handler)

Options sets a route with OPTIONS method

func (*Tango) Patch

func (t *Tango) Patch(url string, c interface{}, middlewares ...Handler)

Patch sets a route with PATCH method

func (*Tango) Post

func (t *Tango) Post(url string, c interface{}, middlewares ...Handler)

Post sets a route with POST method

func (*Tango) Put

func (t *Tango) Put(url string, c interface{}, middlewares ...Handler)

Put sets a route with PUT method

func (*Tango) Run

func (t *Tango) Run(args ...interface{})

Run the http server. Listening on os.GetEnv("PORT") or 8000 by default.

func (*Tango) RunTLS

func (t *Tango) RunTLS(certFile, keyFile string, args ...interface{})

RunTLS runs the https server with special cert and key files

func (*Tango) ServeHTTP

func (t *Tango) ServeHTTP(w http.ResponseWriter, req *http.Request)

ServeHTTP implementes net/http interface so that it could run with net/http

func (*Tango) Trace

func (t *Tango) Trace(url string, c interface{}, middlewares ...Handler)

Trace sets a route with TRACE method

func (*Tango) Use

func (t *Tango) Use(handlers ...Handler)

Use addes some global handlers

func (*Tango) UseHandler

func (t *Tango) UseHandler(handler http.Handler)

UseHandler adds a standard http handler to tango's

type XML

type XML struct{}

XML descirbes return XML type

func (XML) ResponseType

func (XML) ResponseType() int

ResponseType implementes ResponseTyper

type XMLError

type XMLError struct {
	XMLName xml.Name `xml:"err"`
	Content string   `xml:"content"`
}

XMLError describes return xml error

type XMLString

type XMLString struct {
	XMLName xml.Name `xml:"string"`
	Content string   `xml:"content"`
}

XMLString describes return xml string

type Xml

type Xml struct{}

Xml descirbes return XML type Deprecated: use XML instead

func (Xml) ResponseType

func (Xml) ResponseType() int

ResponseType implementes ResponseTyper