Documentation
¶
Index ¶
- Constants
- Variables
- func CleanPath(p string) string
- func Dir(root string, listDirectory bool) http.FileSystem
- func IsDebugging() bool
- func Mode() string
- func SetMode(value string)
- type Accounts
- type Context
- func (c *Context) Abort()
- func (c *Context) AbortWithError(code int, err error) *Error
- func (c *Context) AbortWithStatus(code int)
- func (c *Context) Bind(obj interface{}) error
- func (c *Context) BindJSON(obj interface{}) error
- func (c *Context) BindWith(obj interface{}, b binding.Binding) error
- func (c *Context) ClientIP() string
- func (c *Context) ContentType() string
- func (c *Context) Copy() *Context
- func (c *Context) Data(code int, contentType string, data []byte)
- func (c *Context) Deadline() (deadline time.Time, ok bool)
- func (c *Context) DefaultFormValue(key, defaultValue string) string
- func (c *Context) DefaultParamValue(key, defaultValue string) string
- func (c *Context) DefaultPostFormValue(key, defaultValue string) string
- func (c *Context) Done() <-chan struct{}
- func (c *Context) Err() error
- func (c *Context) Error(err error) *Error
- func (c *Context) File(filepath string)
- func (c *Context) FormValue(key string) (va string)
- func (c *Context) Get(key string) (value interface{}, exists bool)
- func (c *Context) HTML(code int, name string, obj interface{})
- func (c *Context) Header(key, value string)
- func (c *Context) IndentedJSON(code int, obj interface{})
- func (c *Context) IsAborted() bool
- func (c *Context) JSON(code int, obj interface{})
- func (c *Context) MustGet(key string) interface{}
- func (c *Context) Negotiate(code int, config Negotiate)
- func (c *Context) NegotiateFormat(offered ...string) string
- func (c *Context) Next()
- func (c *Context) ParamValue(key string) (va string)
- func (c *Context) PostFormValue(key string) (va string)
- func (c *Context) Redirect(code int, location string)
- func (c *Context) Render(code int, r render.Render)
- func (c *Context) SSEvent(name string, message interface{})
- func (c *Context) Set(key string, value interface{})
- func (c *Context) SetAccepted(formats ...string)
- func (c *Context) Stream(step func(w io.Writer) bool)
- func (c *Context) String(code int, format string, values ...interface{})
- func (c *Context) Value(key interface{}) interface{}
- func (c *Context) XML(code int, obj interface{})
- type Engine
- func (engine *Engine) LoadHTMLFiles(files ...string)
- func (engine *Engine) LoadHTMLGlob(pattern string)
- func (engine *Engine) NoMethod(handlers ...HandlerFunc)
- func (engine *Engine) NoRoute(handlers ...HandlerFunc)
- func (engine *Engine) Run(addr string) (err error)
- func (engine *Engine) RunTLS(addr string, cert string, key string) (err error)
- func (engine *Engine) RunUnix(file string) (err error)
- func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request)
- func (engine *Engine) SetHTMLTemplate(templ *template.Template)
- func (engine *Engine) Use(middlewares ...HandlerFunc)
- type Error
- type ErrorType
- type H
- type HandlerFunc
- func BasicAuth(accounts Accounts) HandlerFunc
- func BasicAuthForRealm(accounts Accounts, realm string) HandlerFunc
- func ErrorLogger() HandlerFunc
- func ErrorLoggerT(typ ErrorType) HandlerFunc
- func Logger() HandlerFunc
- func LoggerWithWriter(out io.Writer) HandlerFunc
- func Recovery() HandlerFunc
- func RecoveryWithWriter(out io.Writer) HandlerFunc
- func WrapF(f http.HandlerFunc) HandlerFunc
- func WrapH(h http.Handler) HandlerFunc
- type HandlersChain
- type Negotiate
- type Param
- type Params
- type ResponseWriter
- type RouterGroup
- func (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc)
- func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc)
- func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc)
- func (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup
- func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc)
- func (group *RouterGroup) Handle(httpMethod, relativePath string, handlers ...HandlerFunc)
- func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc)
- func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc)
- func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc)
- func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc)
- func (group *RouterGroup) Static(relativePath, root string)
- func (group *RouterGroup) StaticFS(relativePath string, fs http.FileSystem)
- func (group *RouterGroup) StaticFile(relativePath, filepath string)
- func (group *RouterGroup) Use(middlewares ...HandlerFunc)
Constants ¶
const ( MIMEJSON = binding.MIMEJSON MIMEHTML = binding.MIMEHTML MIMEXML = binding.MIMEXML MIMEXML2 = binding.MIMEXML2 MIMEPlain = binding.MIMEPlain MIMEPOSTForm = binding.MIMEPOSTForm MIMEMultipartPOSTForm = binding.MIMEMultipartPOSTForm )
const ( DebugMode string = "debug" ReleaseMode string = "release" TestMode string = "test" )
const AbortIndex = math.MaxInt8 / 2
const (
AuthUserKey = "user"
)
const ENV_GIN_MODE = "GIN_MODE"
const Version = "v1.0rc1"
Variables ¶
var DefaultWriter io.Writer = colorable.NewColorableStdout()
Functions ¶
func CleanPath ¶
CleanPath is the URL version of path.Clean, it returns a canonical URL path for p, eliminating . and .. elements.
The following rules are applied iteratively until no further processing can be done:
- Replace multiple slashes with a single slash.
- Eliminate each . path name element (the current directory).
- Eliminate each inner .. path name element (the parent directory) along with the non-.. element that precedes it.
- Eliminate .. elements that begin a rooted path: that is, replace "/.." by "/" at the beginning of a path.
If the result of this process is an empty string, "/" is returned
func IsDebugging ¶
func IsDebugging() bool
Types ¶
type Context ¶
type Context struct { Request *http.Request Writer ResponseWriter Params Params Keys map[string]interface{} Errors errorMsgs Accepted []string // contains filtered or unexported fields }
Context is the most important part of gin. It allows us to pass variables between middleware, manage the flow, validate the JSON of a request and render a JSON response for example.
func (*Context) Abort ¶
func (c *Context) Abort()
Forces the system to not continue calling the pending handlers in the chain.
func (*Context) AbortWithStatus ¶
AbortWithStatus is the same as Abort but also writes the specified response status code. For example, the first handler checks if the request is authorized. If it's not, context.AbortWithStatus(401) should be called.
func (*Context) Bind ¶
This function checks the Content-Type to select a binding engine automatically, Depending the "Content-Type" header different bindings are used: "application/json" --> JSON binding "application/xml" --> XML binding else --> returns an error if Parses the request's body as JSON if Content-Type == "application/json" using JSON or XML as a JSON input. It decodes the json payload into the struct specified as a pointer.Like ParseBody() but this method also writes a 400 error if the json is not valid.
func (*Context) ContentType ¶
func (*Context) DefaultFormValue ¶
func (*Context) DefaultParamValue ¶
func (*Context) DefaultPostFormValue ¶
func (*Context) Error ¶
Attaches an error to the current context. The error is pushed to a list of errors. It's a good idea to call Error for each error that occurred during the resolution of a request. A middleware can be used to collect all the errors and push them to a database together, print a log, or append it in the HTTP response.
func (*Context) Get ¶
Get returns the value for the given key or an error if the key does not exist.
func (*Context) HTML ¶
Renders the HTTP template specified by its file name. It also updates the HTTP code and sets the Content-Type as "text/html". See http://golang.org/doc/articles/wiki/
func (*Context) IndentedJSON ¶
func (*Context) JSON ¶
Serializes the given struct as JSON into the response body in a fast and efficient way. It also sets the Content-Type as "application/json".
func (*Context) MustGet ¶
MustGet returns the value for the given key or panics if the value doesn't exist.
func (*Context) NegotiateFormat ¶
func (*Context) Next ¶
func (c *Context) Next()
Next should be used only in the middlewares. It executes the pending handlers in the chain inside the calling handler. See example in github.
func (*Context) ParamValue ¶
* Shortcut for c.Params.ByName(key)
func (*Context) PostFormValue ¶
* Shortcut for c.Request.PostFormValue(key)
func (*Context) Set ¶
Sets a new pair key/value just for the specified context. It also lazy initializes the hashmap.
func (*Context) SetAccepted ¶
type Engine ¶
type Engine struct { RouterGroup HTMLRender render.HTMLRender // Enables automatic redirection if the current route can't be matched but a // handler for the path with (without) the trailing slash exists. // For example if /foo/ is requested but a route only exists for /foo, the // client is redirected to /foo with http status code 301 for GET requests // and 307 for all other request methods. RedirectTrailingSlash bool // If enabled, the router tries to fix the current request path, if no // handle is registered for it. // First superfluous path elements like ../ or // are removed. // Afterwards the router does a case-insensitive lookup of the cleaned path. // If a handle can be found for this route, the router makes a redirection // to the corrected path with status code 301 for GET requests and 307 for // all other request methods. // For example /FOO and /..//Foo could be redirected to /foo. // RedirectTrailingSlash is independent of this option. RedirectFixedPath bool // If enabled, the router checks if another method is allowed for the // current route, if the current request can not be routed. // If this is the case, the request is answered with 'Method Not Allowed' // and HTTP status code 405. // If no other Method is allowed, the request is delegated to the NotFound // handler. HandleMethodNotAllowed bool // contains filtered or unexported fields }
Represents the web framework, it wraps the blazing fast httprouter multiplexer and a list of global middlewares.
func Default ¶
func Default() *Engine
Returns a Engine instance with the Logger and Recovery already attached.
func New ¶
func New() *Engine
Returns a new blank Engine instance without any middleware attached. The most basic configuration
func (*Engine) LoadHTMLFiles ¶
func (*Engine) LoadHTMLGlob ¶
func (*Engine) NoMethod ¶
func (engine *Engine) NoMethod(handlers ...HandlerFunc)
func (*Engine) NoRoute ¶
func (engine *Engine) NoRoute(handlers ...HandlerFunc)
Adds handlers for NoRoute. It return a 404 code by default.
func (*Engine) ServeHTTP ¶
func (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request)
ServeHTTP makes the router implement the http.Handler interface.
func (*Engine) SetHTMLTemplate ¶
func (*Engine) Use ¶
func (engine *Engine) Use(middlewares ...HandlerFunc)
type Error ¶
func (*Error) MarshalJSON ¶
type H ¶
type H map[string]interface{}
func (H) MarshalXML ¶
Allows type H to be used with xml.Marshal
type HandlerFunc ¶
type HandlerFunc func(*Context)
func BasicAuth ¶
func BasicAuth(accounts Accounts) HandlerFunc
Implements a basic Basic HTTP Authorization. It takes as argument a map[string]string where the key is the user name and the value is the password.
func BasicAuthForRealm ¶
func BasicAuthForRealm(accounts Accounts, realm string) HandlerFunc
Implements a basic Basic HTTP Authorization. It takes as arguments a map[string]string where the key is the user name and the value is the password, as well as the name of the Realm (see http://tools.ietf.org/html/rfc2617#section-1.2)
func ErrorLogger ¶
func ErrorLogger() HandlerFunc
func ErrorLoggerT ¶
func ErrorLoggerT(typ ErrorType) HandlerFunc
func Logger ¶
func Logger() HandlerFunc
func LoggerWithWriter ¶
func LoggerWithWriter(out io.Writer) HandlerFunc
func Recovery ¶
func Recovery() HandlerFunc
Recovery returns a middleware that recovers from any panics and writes a 500 if there was one.
func RecoveryWithWriter ¶
func RecoveryWithWriter(out io.Writer) HandlerFunc
func WrapF ¶
func WrapF(f http.HandlerFunc) HandlerFunc
func WrapH ¶
func WrapH(h http.Handler) HandlerFunc
type HandlersChain ¶
type HandlersChain []HandlerFunc
type Params ¶
type Params []Param
Params is a Param-slice, as returned by the router. The slice is ordered, the first URL parameter is also the first slice value. It is therefore safe to read values by the index.
type ResponseWriter ¶
type RouterGroup ¶
type RouterGroup struct { Handlers HandlersChain BasePath string // contains filtered or unexported fields }
Used internally to configure router, a RouterGroup is associated with a prefix and an array of handlers (middlewares)
func (*RouterGroup) Any ¶
func (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc)
func (*RouterGroup) DELETE ¶
func (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc)
DELETE is a shortcut for router.Handle("DELETE", path, handle)
func (*RouterGroup) GET ¶
func (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc)
GET is a shortcut for router.Handle("GET", path, handle)
func (*RouterGroup) Group ¶
func (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup
Creates a new router group. You should add all the routes that have common middlwares or the same path prefix. For example, all the routes that use a common middlware for authorization could be grouped.
func (*RouterGroup) HEAD ¶
func (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc)
HEAD is a shortcut for router.Handle("HEAD", path, handle)
func (*RouterGroup) Handle ¶
func (group *RouterGroup) Handle(httpMethod, relativePath string, handlers ...HandlerFunc)
func (*RouterGroup) OPTIONS ¶
func (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc)
OPTIONS is a shortcut for router.Handle("OPTIONS", path, handle)
func (*RouterGroup) PATCH ¶
func (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc)
PATCH is a shortcut for router.Handle("PATCH", path, handle)
func (*RouterGroup) POST ¶
func (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc)
POST is a shortcut for router.Handle("POST", path, handle)
func (*RouterGroup) PUT ¶
func (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc)
PUT is a shortcut for router.Handle("PUT", path, handle)
func (*RouterGroup) Static ¶
func (group *RouterGroup) Static(relativePath, root string)
Static serves files from the given file system root. Internally a http.FileServer is used, therefore http.NotFound is used instead of the Router's NotFound handler. To use the operating system's file system implementation, use :
router.Static("/static", "/var/www")
func (*RouterGroup) StaticFS ¶
func (group *RouterGroup) StaticFS(relativePath string, fs http.FileSystem)
func (*RouterGroup) StaticFile ¶
func (group *RouterGroup) StaticFile(relativePath, filepath string)
func (*RouterGroup) Use ¶
func (group *RouterGroup) Use(middlewares ...HandlerFunc)
Adds middlewares to the group, see example code in github.