beego

package module
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Jun 19, 2014 License: Apache-2.0 Imports: 36 Imported by: 0

README

beego

Build Status

beego is a Go Framework inspired by tornado and sinatra.

It is a simple & powerful web framework.

More info beego.me

Features

  • RESTful support
  • MVC architecture
  • Session support (store in memory, file, Redis or MySQL)
  • Cache support (store in memory, Redis or Memcache)
  • Global Config
  • Intelligent routing
  • Thread-safe map
  • Friendly displaying of errors
  • Useful template functions

Documentation

English

API

中文文档

LICENSE

beego is licensed under the Apache Licence, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html).

[Clone in Koding][koding] [koding]: https://koding.com/Teamwork?import=https://github.com/astaxie/beego/archive/master.zip&c=git1

Documentation

Overview

Beego (http://beego.me/) @description beego is an open-source, high-performance web framework for the Go programming language. @link http://github.com/astaxie/beego for the canonical source repository @license http://github.com/astaxie/beego/blob/master/LICENSE @authors astaxie

Beego (http://beego.me/) @description beego is an open-source, high-performance web framework for the Go programming language. @link http://github.com/astaxie/beego for the canonical source repository @license http://github.com/astaxie/beego/blob/master/LICENSE @authors astaxie

Index

Constants

View Source
const (
	LevelTrace = iota
	LevelDebug
	LevelInfo
	LevelWarning
	LevelError
	LevelCritical
)

Log levels to control the logging output.

View Source
const (
	// default filter execution points
	BeforeRouter = iota
	BeforeExec
	AfterExec
	FinishRouter
)
View Source
const VERSION = "1.3.0"

beego web framework version.

Variables

View Source
var (
	BeeApp  *App // beego application
	AppName string
	AppPath string

	AppConfigPath          string
	StaticDir              map[string]string
	TemplateCache          map[string]*template.Template // template caching map
	StaticExtensionsToGzip []string                      // files with should be compressed with gzip (.js,.css,etc)
	EnableHttpListen       bool
	HttpAddr               string
	HttpPort               int
	EnableHttpTLS          bool
	HttpsPort              int
	HttpCertFile           string
	HttpKeyFile            string
	RecoverPanic           bool // flag of auto recover panic
	AutoRender             bool // flag of render template automatically
	ViewsPath              string
	RunMode                string // run mode, "dev" or "prod"
	AppConfig              config.ConfigContainer
	GlobalSessions         *session.Manager // global session mananger
	SessionOn              bool             // flag of starting session auto. default is false.
	SessionProvider        string           // default session provider, memory, mysql , redis ,etc.
	SessionName            string           // the cookie name when saving session id into cookie.
	SessionGCMaxLifetime   int64            // session gc time for auto cleaning expired session.
	SessionSavePath        string           // if use mysql/redis/file provider, define save path to connection info.
	SessionHashFunc        string           // session hash generation func.
	SessionHashKey         string           // session hash salt string.
	SessionCookieLifeTime  int              // the life time of session id in cookie.
	SessionAutoSetCookie   bool             // auto setcookie
	UseFcgi                bool
	MaxMemory              int64
	EnableGzip             bool // flag of enable gzip
	DirectoryIndex         bool // flag of display directory index. default is false.
	HttpServerTimeOut      int64
	ErrorsShow             bool   // flag of show errors in page. if true, show error and trace info in page rendered with error template.
	XSRFKEY                string // xsrf hash salt string.
	EnableXSRF             bool   // flag of enable xsrf.
	XSRFExpire             int    // the expiry of xsrf value.
	CopyRequestBody        bool   // flag of copy raw request body in context.
	TemplateLeft           string
	TemplateRight          string
	BeegoServerName        string // beego server name exported in response header.
	EnableAdmin            bool   // flag of enable admin module to log every request info.
	AdminHttpAddr          string // http server configurations for admin module.
	AdminHttpPort          int
	FlashName              string // name of the flash variable found in response header and cookie
	FlashSeperator         string // used to seperate flash key:value
	AppConfigProvider      string // config provider
	EnableDocs             bool   // enable generate docs & server docs API Swagger
)
View Source
var (
	// custom error when user stop request handler manually.
	USERSTOPRUN                                            = errors.New("User stop run")
	GlobalControllerRouter map[string][]ControllerComments = make(map[string][]ControllerComments) //pkgpath controller:comments
)
View Source
var (

	// beego template caching map and supported template file extensions.
	BeeTemplates   map[string]*template.Template
	BeeTemplateExt []string
)
View Source
var BeeLogger *logs.BeeLogger

logger references the used application logger.

View Source
var FilterMonitorFunc func(string, string, time.Duration) bool

FilterMonitorFunc is default monitor filter when admin module is enable. if this func returns, admin module records qbs for this request by condition of this function logic. usage:

func MyFilterMonitor(method, requestPath string, t time.Duration) bool {
 	if method == "POST" {
		return false
 	}
 	if t.Nanoseconds() < 100 {
		return false
 	}
 	if strings.HasPrefix(requestPath, "/astaxie") {
		return false
 	}
 	return true
}
beego.FilterMonitorFunc = MyFilterMonitor.
View Source
var FormType = map[string]bool{
	"text":     true,
	"textarea": true,
	"hidden":   true,
	"password": true,
}

form types for RenderForm function

View Source
var GlobalDocApi map[string]interface{}
View Source
var (
	// supported http methods.
	HTTPMETHOD = map[string]string{
		"GET":     "GET",
		"POST":    "POST",
		"PUT":     "PUT",
		"DELETE":  "DELETE",
		"PATCH":   "PATCH",
		"OPTIONS": "OPTIONS",
		"HEAD":    "HEAD",
		"TRACE":   "TRACE",
		"CONNECT": "CONNECT",
	}
)

Functions

func AddAPPStartHook

func AddAPPStartHook(hf hookfunc)

The hookfunc will run in beego.Run() such as sessionInit, middlerware start, buildtemplate, admin start

func AddFuncMap

func AddFuncMap(key string, funname interface{}) error

AddFuncMap let user to register a func in the template.

func AddNamespace

func AddNamespace(nl ...*Namespace)

register Namespace into beego.Handler support multi Namespace

func AddTemplateExt

func AddTemplateExt(ext string)

add new extension for template.

func AssetsCss

func AssetsCss(src string) template.HTML

returns stylesheet link tag with src string.

func AssetsJs

func AssetsJs(src string) template.HTML

returns script tag with src string.

func BuildTemplate

func BuildTemplate(dir string) error

build all template files in a directory. it makes beego can render any template file in view directory.

func Compare

func Compare(a, b interface{}) (equal bool)

Compare is a quick and dirty comparison function. It will convert whatever you give it to strings and see if the two values are equal. Whitespace is trimmed. Used by the template parser as "eq".

func Config added in v1.3.0

func Config(returnType, key string, defaultVal interface{}) (value interface{}, err error)

func Critical

func Critical(v ...interface{})

Critical logs a message at critical level.

func Date

func Date(t time.Time, format string) string

Date takes a PHP like date func to Go's time format.

func DateFormat

func DateFormat(t time.Time, layout string) (datestring string)

DateFormat takes a time and a layout string and returns a string with the formatted date. Used by the template parser as "dateformat"

func DateParse

func DateParse(dateString, format string) (time.Time, error)

Parse Date use PHP time format.

func Debug

func Debug(v ...interface{})

Debug logs a message at debug level.

func Error

func Error(v ...interface{})

Error logs a message at error level.

func ExceptMethodAppend

func ExceptMethodAppend(action string)

To append a slice's value into "exceptMethod", for controller's methods shouldn't reflect to AutoRouter

func HasTemplateExt

func HasTemplateExt(paths string) bool

return this path contains supported template extension of beego or not.

func Html2str

func Html2str(html string) string

Html2str returns escaping text convert from html.

func Htmlquote

func Htmlquote(src string) string

Htmlquote returns quoted html string.

func Htmlunquote

func Htmlunquote(src string) string

Htmlunquote returns unquoted html string.

func Info

func Info(v ...interface{})

Info logs a message at info level.

func NSAfter added in v1.3.0

func NSAfter(filiterList ...FilterFunc) innnerNamespace

Namespace FinishRouter filter

func NSAny added in v1.3.0

func NSAny(rootpath string, f FilterFunc) innnerNamespace

Namespace Any

func NSAutoPrefix added in v1.3.0

func NSAutoPrefix(prefix string, c ControllerInterface) innnerNamespace

Namespace AutoPrefix

func NSAutoRouter added in v1.3.0

func NSAutoRouter(c ControllerInterface) innnerNamespace

Namespace AutoRouter

func NSBefore added in v1.3.0

func NSBefore(filiterList ...FilterFunc) innnerNamespace

Namespace BeforeRouter filter

func NSCond added in v1.3.0

func NSCond(cond namespaceCond) innnerNamespace

Namespace Condition

func NSDelete added in v1.3.0

func NSDelete(rootpath string, f FilterFunc) innnerNamespace

Namespace Delete

func NSGet added in v1.3.0

func NSGet(rootpath string, f FilterFunc) innnerNamespace

Namespace Get

func NSHead added in v1.3.0

func NSHead(rootpath string, f FilterFunc) innnerNamespace

Namespace Head

func NSInclude added in v1.3.0

func NSInclude(cList ...ControllerInterface) innnerNamespace

Namespace Include ControllerInterface

func NSNamespace added in v1.3.0

func NSNamespace(prefix string, params ...innnerNamespace) innnerNamespace

Namespace add sub Namespace

func NSOptions added in v1.3.0

func NSOptions(rootpath string, f FilterFunc) innnerNamespace

Namespace Options

func NSPatch added in v1.3.0

func NSPatch(rootpath string, f FilterFunc) innnerNamespace

Namespace Patch

func NSPost added in v1.3.0

func NSPost(rootpath string, f FilterFunc) innnerNamespace

Namespace Post

func NSPut added in v1.3.0

func NSPut(rootpath string, f FilterFunc) innnerNamespace

Namespace Put

func NSRouter added in v1.3.0

func NSRouter(rootpath string, c ControllerInterface, mappingMethods ...string) innnerNamespace

Namespace Router

func ParseConfig

func ParseConfig() (err error)

ParseConfig parsed default config file. now only support ini, next will support json.

func ParseForm

func ParseForm(form url.Values, obj interface{}) error

parse form values to struct via tag.

func RenderForm

func RenderForm(obj interface{}) template.HTML

render object to form html. obj must be a struct pointer.

func Run

func Run(params ...string)

Run beego application. beego.Run() default run on HttpPort beego.Run(":8089") beego.Run("127.0.0.1:8089")

func SetLevel

func SetLevel(l int)

SetLogLevel sets the global log level used by the simple logger.

func SetLogFuncCall

func SetLogFuncCall(b bool)

func SetLogger

func SetLogger(adaptername string, config string) error

SetLogger sets a new logger.

func Str2html

func Str2html(raw string) template.HTML

Convert string to template.HTML type.

func Substr

func Substr(s string, start, length int) string

Substr returns the substr from start to length.

func TestBeegoInit

func TestBeegoInit(apppath string)

this function is for test package init

func Trace

func Trace(v ...interface{})

Trace logs a message at trace level.

func UrlFor

func UrlFor(endpoint string, values ...string) string

UrlFor returns url string with another registered controller handler with params.

	usage:

	UrlFor(".index")
	print UrlFor("index")
 router /login
	print UrlFor("login")
	print UrlFor("login", "next","/"")
 router /profile/:username
	print UrlFor("profile", ":username","John Doe")
	result:
	/
	/login
	/login?next=/
	/user/John Doe

 more detail http://beego.me/docs/mvc/controller/urlbuilding.md

func Warn

func Warn(v ...interface{})

Warning logs a message at warning level.

Types

type App

type App struct {
	Handlers *ControllerRegistor
	Server   *http.Server
}

App defines beego application with a new PatternServeMux.

func AddGroupRouter

func AddGroupRouter(prefix string, groups GroupRouters) *App

AddGroupRouter with the prefix it will register the router in BeeApp the follow code is write in modules: GR:=NewGroupRouters() GR.AddRouter("/login",&UserController,"get:Login") GR.AddRouter("/logout",&UserController,"get:Logout") GR.AddRouter("/register",&UserController,"get:Reg") the follow code is write in app: import "github.com/beego/modules/auth" AddRouterGroup("/admin", auth.GR)

func Any

func Any(rootpath string, f FilterFunc) *App

register router for all method usage:

beego.Any("/api", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func AutoPrefix

func AutoPrefix(prefix string, c ControllerInterface) *App

AutoPrefix adds controller handler to BeeApp with prefix. it's same to App.AutoRouterWithPrefix. if beego.AutoPrefix("/admin",&MainContorlller{}) and MainController has methods List and Page, visit the url /admin/main/list to exec List function or /admin/main/page to exec Page function.

func AutoRouter

func AutoRouter(c ControllerInterface) *App

AutoRouter adds defined controller handler to BeeApp. it's same to App.AutoRouter. if beego.AddAuto(&MainContorlller{}) and MainController has methods List and Page, visit the url /main/list to exec List function or /main/page to exec Page function.

func DelStaticPath

func DelStaticPath(url string) *App

DelStaticPath removes the static folder setting in this url pattern in beego application.

func Delete

func Delete(rootpath string, f FilterFunc) *App

register router for Delete method usage:

beego.Delete("/api", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func Errorhandler

func Errorhandler(err string, h http.HandlerFunc) *App

ErrorHandler registers http.HandlerFunc to each http err code string. usage:

beego.ErrorHandler("404",NotFound)
beego.ErrorHandler("500",InternalServerError)

func Get

func Get(rootpath string, f FilterFunc) *App

register router for Get method usage:

beego.Get("/", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func Handler

func Handler(rootpath string, h http.Handler, options ...interface{}) *App

register router for own Handler usage:

beego.Handler("/api", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})
func Head(rootpath string, f FilterFunc) *App

register router for Head method usage:

beego.Head("/api", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func Include added in v1.3.0

func Include(cList ...ControllerInterface) *App

Router add list from usage: beego.Include(&BankAccount{}, &OrderController{},&RefundController{},&ReceiptController{})

type BankAccount struct{
  beego.Controller
}

register the function

func (b *BankAccount)Mapping(){
 b.Mapping("ShowAccount" , b.ShowAccount)
 b.Mapping("ModifyAccount", b.ModifyAccount)
}

//@router /account/:id [get]

func (b *BankAccount) ShowAccount(){
   //logic
}

//@router /account/:id [post]

func (b *BankAccount) ModifyAccount(){
   //logic
}

the comments @router url methodlist url support all the function Router's pattern methodlist [get post head put delete options *]

func InsertFilter

func InsertFilter(pattern string, pos int, filter FilterFunc) *App

InsertFilter adds a FilterFunc with pattern condition and action constant. The pos means action constant including beego.BeforeRouter, beego.AfterStatic, beego.BeforeExec, beego.AfterExec and beego.FinishRouter.

func NewApp

func NewApp() *App

NewApp returns a new beego application.

func Options

func Options(rootpath string, f FilterFunc) *App

register router for Options method usage:

beego.Options("/api", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func Patch

func Patch(rootpath string, f FilterFunc) *App

register router for Patch method usage:

beego.Patch("/api", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func Post

func Post(rootpath string, f FilterFunc) *App

register router for Post method usage:

beego.Post("/api", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func Put

func Put(rootpath string, f FilterFunc) *App

register router for Put method usage:

beego.Put("/api", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func RESTRouter

func RESTRouter(rootpath string, c ControllerInterface) *App

RESTRouter adds a restful controller handler to BeeApp. its' controller implements beego.ControllerInterface and defines a param "pattern/:objectId" to visit each resource.

func Router

func Router(rootpath string, c ControllerInterface, mappingMethods ...string) *App

Router adds a patterned controller handler to BeeApp. it's an alias method of App.Router. usage:

simple router
beego.Router("/admin", &admin.UserController{})
beego.Router("/admin/index", &admin.ArticleController{})

regex router

beego.Router("/api/:id([0-9] )", &controllers.RController{})

custom rules
beego.Router("/api/list",&RestController{},"*:ListFood")
beego.Router("/api/create",&RestController{},"post:CreateFood")
beego.Router("/api/update",&RestController{},"put:UpdateFood")
beego.Router("/api/delete",&RestController{},"delete:DeleteFood")

func SetStaticPath

func SetStaticPath(url string, path string) *App

SetStaticPath sets static directory path and proper url pattern in beego application. if beego.SetStaticPath("static","public"), visit /static/* to load static file in folder "public".

func SetViewsPath

func SetViewsPath(path string) *App

SetViewsPath sets view directory path in beego application.

func (*App) Run

func (app *App) Run()

Run beego application.

type Controller

type Controller struct {
	Ctx  *context.Context
	Data map[interface{}]interface{}

	TplNames       string
	Layout         string
	LayoutSections map[string]string // the key is the section name and the value is the template name
	TplExt         string

	CruSession    session.SessionStore
	XSRFExpire    int
	AppController interface{}
	EnableRender  bool
	EnableXSRF    bool
	// contains filtered or unexported fields
}

Controller defines some basic http request handler operations, such as http context, template and view, session and xsrf.

func (*Controller) Abort

func (c *Controller) Abort(code string)

Aborts stops controller handler and show the error data if code is defined in ErrorMap or code string.

func (*Controller) CheckXsrfCookie

func (c *Controller) CheckXsrfCookie() bool

CheckXsrfCookie checks xsrf token in this request is valid or not. the token can provided in request header "X-Xsrftoken" and "X-CsrfToken" or in form field value named as "_xsrf".

func (*Controller) DelSession

func (c *Controller) DelSession(name interface{})

SetSession removes value from session.

func (*Controller) Delete

func (c *Controller) Delete()

Delete adds a request function to handle DELETE request.

func (*Controller) DestroySession

func (c *Controller) DestroySession()

DestroySession cleans session data and session cookie.

func (*Controller) Finish

func (c *Controller) Finish()

Finish runs after request function execution.

func (*Controller) Get

func (c *Controller) Get()

Get adds a request function to handle GET request.

func (*Controller) GetBool

func (c *Controller) GetBool(key string) (bool, error)

GetBool returns input value as bool.

func (*Controller) GetControllerAndAction

func (c *Controller) GetControllerAndAction() (controllerName, actionName string)

GetControllerAndAction gets the executing controller name and action name.

func (*Controller) GetFile

func (c *Controller) GetFile(key string) (multipart.File, *multipart.FileHeader, error)

GetFile returns the file data in file upload field named as key. it returns the first one of multi-uploaded files.

func (*Controller) GetFloat

func (c *Controller) GetFloat(key string) (float64, error)

GetFloat returns input value as float64.

func (*Controller) GetInt

func (c *Controller) GetInt(key string) (int64, error)

GetInt returns input value as int64.

func (*Controller) GetSecureCookie

func (c *Controller) GetSecureCookie(Secret, key string) (string, bool)

GetSecureCookie returns decoded cookie value from encoded browser cookie values.

func (*Controller) GetSession

func (c *Controller) GetSession(name interface{}) interface{}

GetSession gets value from session.

func (*Controller) GetString

func (c *Controller) GetString(key string) string

GetString returns the input value by key string.

func (*Controller) GetStrings

func (c *Controller) GetStrings(key string) []string

GetStrings returns the input string slice by key string. it's designed for multi-value input field such as checkbox(input[type=checkbox]), multi-selection.

func (*Controller) HandlerFunc added in v1.3.0

func (c *Controller) HandlerFunc(fnname string) bool

call function fn

func (*Controller) Head

func (c *Controller) Head()

Head adds a request function to handle HEAD request.

func (*Controller) Init

func (c *Controller) Init(ctx *context.Context, controllerName, actionName string, app interface{})

Init generates default values of controller operations.

func (*Controller) Input

func (c *Controller) Input() url.Values

Input returns the input data map from POST or PUT request body and query string.

func (*Controller) IsAjax

func (c *Controller) IsAjax() bool

IsAjax returns this request is ajax or not.

func (*Controller) Mapping added in v1.3.0

func (c *Controller) Mapping(method string, fn func())

func (*Controller) Options

func (c *Controller) Options()

Options adds a request function to handle OPTIONS request.

func (*Controller) ParseForm

func (c *Controller) ParseForm(obj interface{}) error

ParseForm maps input data map to obj struct.

func (*Controller) Patch

func (c *Controller) Patch()

Patch adds a request function to handle PATCH request.

func (*Controller) Post

func (c *Controller) Post()

Post adds a request function to handle POST request.

func (*Controller) Prepare

func (c *Controller) Prepare()

Prepare runs after Init before request function execution.

func (*Controller) Put

func (c *Controller) Put()

Put adds a request function to handle PUT request.

func (*Controller) Redirect

func (c *Controller) Redirect(url string, code int)

Redirect sends the redirection response to url with status code.

func (*Controller) Render

func (c *Controller) Render() error

Render sends the response with rendered template bytes as text/html type.

func (*Controller) RenderBytes

func (c *Controller) RenderBytes() ([]byte, error)

RenderBytes returns the bytes of rendered template string. Do not send out response.

func (*Controller) RenderString

func (c *Controller) RenderString() (string, error)

RenderString returns the rendered template string. Do not send out response.

func (*Controller) SaveToFile

func (c *Controller) SaveToFile(fromfile, tofile string) error

SaveToFile saves uploaded file to new path. it only operates the first one of mutil-upload form file field.

func (*Controller) ServeFormatted

func (c *Controller) ServeFormatted()

ServeFormatted serve Xml OR Json, depending on the value of the Accept header

func (*Controller) ServeJson

func (c *Controller) ServeJson(encoding ...bool)

ServeJson sends a json response with encoding charset.

func (*Controller) ServeJsonp

func (c *Controller) ServeJsonp()

ServeJsonp sends a jsonp response.

func (*Controller) ServeXml

func (c *Controller) ServeXml()

ServeXml sends xml response.

func (*Controller) SessionRegenerateID

func (c *Controller) SessionRegenerateID()

SessionRegenerateID regenerates session id for this session. the session data have no changes.

func (*Controller) SetSecureCookie

func (c *Controller) SetSecureCookie(Secret, name, value string, others ...interface{})

SetSecureCookie puts value into cookie after encoded the value.

func (*Controller) SetSession

func (c *Controller) SetSession(name interface{}, value interface{})

SetSession puts value into session.

func (*Controller) StartSession

func (c *Controller) StartSession() session.SessionStore

StartSession starts session and load old session data info this controller.

func (*Controller) StopRun

func (c *Controller) StopRun()

StopRun makes panic of USERSTOPRUN error and go to recover function if defined.

func (*Controller) URLMapping added in v1.3.0

func (c *Controller) URLMapping()

URLMapping register the internal Controller router.

func (*Controller) UrlFor

func (c *Controller) UrlFor(endpoint string, values ...string) string

UrlFor does another controller handler in this request function. it goes to this controller method if endpoint is not clear.

func (*Controller) XsrfFormHtml

func (c *Controller) XsrfFormHtml() string

XsrfFormHtml writes an input field contains xsrf token value.

func (*Controller) XsrfToken

func (c *Controller) XsrfToken() string

XsrfToken creates a xsrf token string and returns.

type ControllerComments added in v1.3.0

type ControllerComments struct {
	Method           string
	Router           string
	AllowHTTPMethods []string
	Params           []map[string]string
}

store the comment for the controller method

type ControllerInterface

type ControllerInterface interface {
	Init(ct *context.Context, controllerName, actionName string, app interface{})
	Prepare()
	Get()
	Post()
	Delete()
	Put()
	Head()
	Patch()
	Options()
	Finish()
	Render() error
	XsrfToken() string
	CheckXsrfCookie() bool
	HandlerFunc(fn string) bool
	URLMapping()
}

ControllerInterface is an interface to uniform all controller handler.

type ControllerRegistor

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

ControllerRegistor containers registered router rules, controller handlers and filters.

func NewControllerRegister added in v1.3.0

func NewControllerRegister() *ControllerRegistor

NewControllerRegister returns a new ControllerRegistor.

func (*ControllerRegistor) Add

func (p *ControllerRegistor) Add(pattern string, c ControllerInterface, mappingMethods ...string)

Add controller handler and pattern rules to ControllerRegistor. usage:

default methods is the same name as method
Add("/user",&UserController{})
Add("/api/list",&RestController{},"*:ListFood")
Add("/api/create",&RestController{},"post:CreateFood")
Add("/api/update",&RestController{},"put:UpdateFood")
Add("/api/delete",&RestController{},"delete:DeleteFood")
Add("/api",&RestController{},"get,post:ApiFunc")
Add("/simple",&SimpleController{},"get:GetFunc;post:PostFunc")

func (*ControllerRegistor) AddAuto

Add auto router to ControllerRegistor. example beego.AddAuto(&MainContorlller{}), MainController has method List and Page. visit the url /main/list to execute List function /main/page to execute Page function.

func (*ControllerRegistor) AddAutoPrefix

func (p *ControllerRegistor) AddAutoPrefix(prefix string, c ControllerInterface)

Add auto router to ControllerRegistor with prefix. example beego.AddAutoPrefix("/admin",&MainContorlller{}), MainController has method List and Page. visit the url /admin/main/list to execute List function /admin/main/page to execute Page function.

func (*ControllerRegistor) AddMethod

func (p *ControllerRegistor) AddMethod(method, pattern string, f FilterFunc)

add http method router usage:

AddMethod("get","/api/:id", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func (*ControllerRegistor) Any

func (p *ControllerRegistor) Any(pattern string, f FilterFunc)

add all method usage:

Any("/api/:id", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func (*ControllerRegistor) Delete

func (p *ControllerRegistor) Delete(pattern string, f FilterFunc)

add delete method usage:

Delete("/api/:id", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func (*ControllerRegistor) Get

func (p *ControllerRegistor) Get(pattern string, f FilterFunc)

add get method usage:

Get("/", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func (*ControllerRegistor) Handler

func (p *ControllerRegistor) Handler(pattern string, h http.Handler, options ...interface{})

add user defined Handler

func (*ControllerRegistor) Head

func (p *ControllerRegistor) Head(pattern string, f FilterFunc)

add head method usage:

Head("/api/:id", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func (*ControllerRegistor) Include added in v1.3.0

func (p *ControllerRegistor) Include(cList ...ControllerInterface)

only when the Runmode is dev will generate router file in the router/auto.go from the controller Include(&BankAccount{}, &OrderController{},&RefundController{},&ReceiptController{})

func (*ControllerRegistor) InsertFilter

func (p *ControllerRegistor) InsertFilter(pattern string, pos int, filter FilterFunc) error

Add a FilterFunc with pattern rule and action constant.

func (*ControllerRegistor) Options

func (p *ControllerRegistor) Options(pattern string, f FilterFunc)

add options method usage:

Options("/api/:id", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func (*ControllerRegistor) Patch

func (p *ControllerRegistor) Patch(pattern string, f FilterFunc)

add patch method usage:

Patch("/api/:id", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func (*ControllerRegistor) Post

func (p *ControllerRegistor) Post(pattern string, f FilterFunc)

add post method usage:

Post("/api", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func (*ControllerRegistor) Put

func (p *ControllerRegistor) Put(pattern string, f FilterFunc)

add put method usage:

Put("/api/:id", func(ctx *context.Context){
      ctx.Output.Body("hello world")
})

func (*ControllerRegistor) ServeHTTP

func (p *ControllerRegistor) ServeHTTP(rw http.ResponseWriter, r *http.Request)

Implement http.Handler interface.

func (*ControllerRegistor) UrlFor

func (p *ControllerRegistor) UrlFor(endpoint string, values ...string) string

UrlFor does another controller handler in this request function. it can access any controller method.

type FilterFunc

type FilterFunc func(*context.Context)

FilterFunc defines filter function type.

type FilterRouter

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

FilterRouter defines filter operation before controller handler execution. it can match patterned url and do filter function when action arrives.

func (*FilterRouter) ValidRouter

func (f *FilterRouter) ValidRouter(router string) (bool, map[string]string)

ValidRouter check current request is valid for this filter. if matched, returns parsed params in this request by defined filter router pattern.

type FlashData

type FlashData struct {
	Data map[string]string
}

FlashData is a tools to maintain data when using across request.

func NewFlash

func NewFlash() *FlashData

NewFlash return a new empty FlashData struct.

func ReadFromRequest

func ReadFromRequest(c *Controller) *FlashData

ReadFromRequest parsed flash data from encoded values in cookie.

func (*FlashData) Error

func (fd *FlashData) Error(msg string, args ...interface{})

Error writes error message to flash.

func (*FlashData) Notice

func (fd *FlashData) Notice(msg string, args ...interface{})

Notice writes notice message to flash.

func (*FlashData) Store

func (fd *FlashData) Store(c *Controller)

Store does the saving operation of flash data. the data are encoded and saved in cookie.

func (*FlashData) Warning

func (fd *FlashData) Warning(msg string, args ...interface{})

Warning writes warning message to flash.

type GroupRouters

type GroupRouters []groupRouter

RouterGroups which will store routers

func NewGroupRouters

func NewGroupRouters() GroupRouters

Get a new GroupRouters

func (*GroupRouters) AddAuto

func (gr *GroupRouters) AddAuto(c ControllerInterface)

func (*GroupRouters) AddRouter

func (gr *GroupRouters) AddRouter(pattern string, c ControllerInterface, mappingMethod ...string)

Add Router in the GroupRouters it is for plugin or module to register router

type Namespace

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

Namespace is store all the info

func NewNamespace

func NewNamespace(prefix string, params ...innnerNamespace) *Namespace

get new Namespace

func (*Namespace) Any

func (n *Namespace) Any(rootpath string, f FilterFunc) *Namespace

same as beego.Any refer: https://godoc.org/github.com/astaxie/beego#Any

func (*Namespace) AutoPrefix

func (n *Namespace) AutoPrefix(prefix string, c ControllerInterface) *Namespace

same as beego.AutoPrefix refer: https://godoc.org/github.com/astaxie/beego#AutoPrefix

func (*Namespace) AutoRouter

func (n *Namespace) AutoRouter(c ControllerInterface) *Namespace

same as beego.AutoRouter refer: https://godoc.org/github.com/astaxie/beego#AutoRouter

func (*Namespace) Cond

func (n *Namespace) Cond(cond namespaceCond) *Namespace

set condtion function if cond return true can run this namespace, else can't usage:

ns.Cond(func (ctx *context.Context) bool{
      if ctx.Input.Domain() == "api.beego.me" {
        return true
      }
      return false
  })

Cond as the first filter

func (*Namespace) Delete

func (n *Namespace) Delete(rootpath string, f FilterFunc) *Namespace

same as beego.Delete refer: https://godoc.org/github.com/astaxie/beego#Delete

func (*Namespace) Filter

func (n *Namespace) Filter(action string, filter ...FilterFunc) *Namespace

add filter in the Namespace action has before & after FilterFunc usage:

Filter("before", func (ctx *context.Context){
      _, ok := ctx.Input.Session("uid").(int)
      if !ok && ctx.Request.RequestURI != "/login" {
         ctx.Redirect(302, "/login")
       }
  })

func (*Namespace) Get

func (n *Namespace) Get(rootpath string, f FilterFunc) *Namespace

same as beego.Get refer: https://godoc.org/github.com/astaxie/beego#Get

func (*Namespace) Handler

func (n *Namespace) Handler(rootpath string, h http.Handler) *Namespace

same as beego.Handler refer: https://godoc.org/github.com/astaxie/beego#Handler

func (*Namespace) Head

func (n *Namespace) Head(rootpath string, f FilterFunc) *Namespace

same as beego.Head refer: https://godoc.org/github.com/astaxie/beego#Head

func (*Namespace) Include added in v1.3.0

func (n *Namespace) Include(cList ...ControllerInterface) *Namespace

add include class refer: https://godoc.org/github.com/astaxie/beego#Include

func (*Namespace) Namespace

func (n *Namespace) Namespace(ns ...*Namespace) *Namespace

nest Namespace usage: ns := beego.NewNamespace(“/v1”). Namespace(

beego.NewNamespace("/shop").
    Get("/:id", func(ctx *context.Context) {
        ctx.Output.Body([]byte("shopinfo"))
}),
beego.NewNamespace("/order").
    Get("/:id", func(ctx *context.Context) {
        ctx.Output.Body([]byte("orderinfo"))
}),
beego.NewNamespace("/crm").
    Get("/:id", func(ctx *context.Context) {
        ctx.Output.Body([]byte("crminfo"))
}),

)

func (*Namespace) Options

func (n *Namespace) Options(rootpath string, f FilterFunc) *Namespace

same as beego.Options refer: https://godoc.org/github.com/astaxie/beego#Options

func (*Namespace) Patch

func (n *Namespace) Patch(rootpath string, f FilterFunc) *Namespace

same as beego.Patch refer: https://godoc.org/github.com/astaxie/beego#Patch

func (*Namespace) Post

func (n *Namespace) Post(rootpath string, f FilterFunc) *Namespace

same as beego.Post refer: https://godoc.org/github.com/astaxie/beego#Post

func (*Namespace) Put

func (n *Namespace) Put(rootpath string, f FilterFunc) *Namespace

same as beego.Put refer: https://godoc.org/github.com/astaxie/beego#Put

func (*Namespace) Router

func (n *Namespace) Router(rootpath string, c ControllerInterface, mappingMethods ...string) *Namespace

same as beego.Rourer refer: https://godoc.org/github.com/astaxie/beego#Router

type Tree added in v1.3.0

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

func NewTree added in v1.3.0

func NewTree() *Tree

func (*Tree) AddRouter added in v1.3.0

func (t *Tree) AddRouter(pattern string, runObject interface{})

call addseg function

func (*Tree) AddTree added in v1.3.0

func (t *Tree) AddTree(prefix string, tree *Tree)

add Tree to the exist Tree prefix should has no params

func (*Tree) Match added in v1.3.0

func (t *Tree) Match(pattern string) (runObject interface{}, params map[string]string)

match router to runObject & params

Directories

Path Synopsis
xml
example
chat
Beego (http://beego.me/) @description beego is an open-source, high-performance web framework for the Go programming language.
Beego (http://beego.me/) @description beego is an open-source, high-performance web framework for the Go programming language.
plugins
captcha
an example for use captcha “` package controllers import ( "github.com/astaxie/beego" "github.com/astaxie/beego/cache" "github.com/astaxie/beego/utils/captcha" ) var cpt *captcha.Captcha func init() { // use beego cache system store the captcha data store := cache.NewMemoryCache() cpt = captcha.NewWithFilter("/captcha/", store) } type MainController struct { beego.Controller } func (this *MainController) Get() { this.TplNames = "index.tpl" } func (this *MainController) Post() { this.TplNames = "index.tpl" this.Data["Success"] = cpt.VerifyReq(this.Ctx.Request) } “` template usage “` {{.Success}} <form action="/" method="post"> {{create_captcha}} <input name="captcha" type="text"> </form> “`
an example for use captcha “` package controllers import ( "github.com/astaxie/beego" "github.com/astaxie/beego/cache" "github.com/astaxie/beego/utils/captcha" ) var cpt *captcha.Captcha func init() { // use beego cache system store the captcha data store := cache.NewMemoryCache() cpt = captcha.NewWithFilter("/captcha/", store) } type MainController struct { beego.Controller } func (this *MainController) Get() { this.TplNames = "index.tpl" } func (this *MainController) Post() { this.TplNames = "index.tpl" this.Data["Success"] = cpt.VerifyReq(this.Ctx.Request) } “` template usage “` {{.Success}} <form action="/" method="post"> {{create_captcha}} <input name="captcha" type="text"> </form> “`

Jump to

Keyboard shortcuts

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