Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
eb3479b7
Commit
eb3479b7
authored
Sep 06, 2015
by
astaxie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
optimize the app structure
parent
45b72b06
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
198 additions
and
196 deletions
+198
-196
app.go
app.go
+189
-0
beego.go
beego.go
+9
-192
config.go
config.go
+0
-4
No files found.
app.go
View file @
eb3479b7
...
...
@@ -20,12 +20,22 @@ import (
"net/http"
"net/http/fcgi"
"os"
"path"
"time"
"github.com/astaxie/beego/grace"
"github.com/astaxie/beego/utils"
)
var
(
BeeApp
*
App
)
func
init
()
{
// create beego application
BeeApp
=
NewApp
()
}
// App defines beego application with a new PatternServeMux.
type
App
struct
{
Handlers
*
ControllerRegister
...
...
@@ -170,3 +180,182 @@ func (app *App) Run() {
}
<-
endRunning
}
// 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
Router
(
rootpath
string
,
c
ControllerInterface
,
mappingMethods
...
string
)
*
App
{
BeeApp
.
Handlers
.
Add
(
rootpath
,
c
,
mappingMethods
...
)
return
BeeApp
}
// 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
Include
(
cList
...
ControllerInterface
)
*
App
{
BeeApp
.
Handlers
.
Include
(
cList
...
)
return
BeeApp
}
// RESTRouter adds a restful controller handler to BeeApp.
// its' controller implements beego.ControllerInterface and
// defines a param "pattern/:objectId" to visit each resource.
func
RESTRouter
(
rootpath
string
,
c
ControllerInterface
)
*
App
{
Router
(
rootpath
,
c
)
Router
(
path
.
Join
(
rootpath
,
":objectId"
),
c
)
return
BeeApp
}
// 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
AutoRouter
(
c
ControllerInterface
)
*
App
{
BeeApp
.
Handlers
.
AddAuto
(
c
)
return
BeeApp
}
// 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
AutoPrefix
(
prefix
string
,
c
ControllerInterface
)
*
App
{
BeeApp
.
Handlers
.
AddAutoPrefix
(
prefix
,
c
)
return
BeeApp
}
// register router for Get method
// usage:
// beego.Get("/", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Get
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Get
(
rootpath
,
f
)
return
BeeApp
}
// register router for Post method
// usage:
// beego.Post("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Post
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Post
(
rootpath
,
f
)
return
BeeApp
}
// register router for Delete method
// usage:
// beego.Delete("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Delete
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Delete
(
rootpath
,
f
)
return
BeeApp
}
// register router for Put method
// usage:
// beego.Put("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Put
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Put
(
rootpath
,
f
)
return
BeeApp
}
// register router for Head method
// usage:
// beego.Head("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Head
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Head
(
rootpath
,
f
)
return
BeeApp
}
// register router for Options method
// usage:
// beego.Options("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Options
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Options
(
rootpath
,
f
)
return
BeeApp
}
// register router for Patch method
// usage:
// beego.Patch("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Patch
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Patch
(
rootpath
,
f
)
return
BeeApp
}
// register router for all method
// usage:
// beego.Any("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Any
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Any
(
rootpath
,
f
)
return
BeeApp
}
// register router for own Handler
// usage:
// beego.Handler("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Handler
(
rootpath
string
,
h
http
.
Handler
,
options
...
interface
{})
*
App
{
BeeApp
.
Handlers
.
Handler
(
rootpath
,
h
,
options
...
)
return
BeeApp
}
// InsertFilter adds a FilterFunc with pattern condition and action constant.
// The pos means action constant including
// beego.BeforeStatic, beego.BeforeRouter, beego.BeforeExec, beego.AfterExec and beego.FinishRouter.
// The bool params is for setting the returnOnOutput value (false allows multiple filters to execute)
func
InsertFilter
(
pattern
string
,
pos
int
,
filter
FilterFunc
,
params
...
bool
)
*
App
{
BeeApp
.
Handlers
.
InsertFilter
(
pattern
,
pos
,
filter
,
params
...
)
return
BeeApp
}
beego.go
View file @
eb3479b7
...
...
@@ -15,9 +15,7 @@
package
beego
import
(
"net/http"
"os"
"path"
"path/filepath"
"strconv"
"strings"
...
...
@@ -28,178 +26,12 @@ import (
// beego web framework version.
const
VERSION
=
"1.5.0"
type
hookfunc
func
()
error
//hook function to run
var
hooks
[]
hookfunc
//hook function slice to store the hookfunc
//hook function to run
type
hookfunc
func
()
error
// 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
Router
(
rootpath
string
,
c
ControllerInterface
,
mappingMethods
...
string
)
*
App
{
BeeApp
.
Handlers
.
Add
(
rootpath
,
c
,
mappingMethods
...
)
return
BeeApp
}
// 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
Include
(
cList
...
ControllerInterface
)
*
App
{
BeeApp
.
Handlers
.
Include
(
cList
...
)
return
BeeApp
}
// RESTRouter adds a restful controller handler to BeeApp.
// its' controller implements beego.ControllerInterface and
// defines a param "pattern/:objectId" to visit each resource.
func
RESTRouter
(
rootpath
string
,
c
ControllerInterface
)
*
App
{
Router
(
rootpath
,
c
)
Router
(
path
.
Join
(
rootpath
,
":objectId"
),
c
)
return
BeeApp
}
// 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
AutoRouter
(
c
ControllerInterface
)
*
App
{
BeeApp
.
Handlers
.
AddAuto
(
c
)
return
BeeApp
}
// 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
AutoPrefix
(
prefix
string
,
c
ControllerInterface
)
*
App
{
BeeApp
.
Handlers
.
AddAutoPrefix
(
prefix
,
c
)
return
BeeApp
}
// register router for Get method
// usage:
// beego.Get("/", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Get
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Get
(
rootpath
,
f
)
return
BeeApp
}
// register router for Post method
// usage:
// beego.Post("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Post
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Post
(
rootpath
,
f
)
return
BeeApp
}
// register router for Delete method
// usage:
// beego.Delete("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Delete
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Delete
(
rootpath
,
f
)
return
BeeApp
}
// register router for Put method
// usage:
// beego.Put("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Put
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Put
(
rootpath
,
f
)
return
BeeApp
}
// register router for Head method
// usage:
// beego.Head("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Head
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Head
(
rootpath
,
f
)
return
BeeApp
}
// register router for Options method
// usage:
// beego.Options("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Options
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Options
(
rootpath
,
f
)
return
BeeApp
}
// register router for Patch method
// usage:
// beego.Patch("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Patch
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Patch
(
rootpath
,
f
)
return
BeeApp
}
// register router for all method
// usage:
// beego.Any("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Any
(
rootpath
string
,
f
FilterFunc
)
*
App
{
BeeApp
.
Handlers
.
Any
(
rootpath
,
f
)
return
BeeApp
}
// register router for own Handler
// usage:
// beego.Handler("/api", func(ctx *context.Context){
// ctx.Output.Body("hello world")
// })
func
Handler
(
rootpath
string
,
h
http
.
Handler
,
options
...
interface
{})
*
App
{
BeeApp
.
Handlers
.
Handler
(
rootpath
,
h
,
options
...
)
return
BeeApp
}
var
(
hooks
=
make
([]
hookfunc
,
0
)
//hook function slice to store the hookfunc
)
// SetViewsPath sets view directory path in beego application.
func
SetViewsPath
(
path
string
)
*
App
{
...
...
@@ -228,15 +60,6 @@ func DelStaticPath(url string) *App {
return
BeeApp
}
// InsertFilter adds a FilterFunc with pattern condition and action constant.
// The pos means action constant including
// beego.BeforeStatic, beego.BeforeRouter, beego.BeforeExec, beego.AfterExec and beego.FinishRouter.
// The bool params is for setting the returnOnOutput value (false allows multiple filters to execute)
func
InsertFilter
(
pattern
string
,
pos
int
,
filter
FilterFunc
,
params
...
bool
)
*
App
{
BeeApp
.
Handlers
.
InsertFilter
(
pattern
,
pos
,
filter
,
params
...
)
return
BeeApp
}
// The hookfunc will run in beego.Run()
// such as sessionInit, middlerware start, buildtemplate, admin start
func
AddAPPStartHook
(
hf
hookfunc
)
{
...
...
@@ -249,7 +72,7 @@ func AddAPPStartHook(hf hookfunc) {
// beego.Run("127.0.0.1:8089")
func
Run
(
params
...
string
)
{
initBeforeHttpRun
()
if
len
(
params
)
>
0
&&
params
[
0
]
!=
""
{
strs
:=
strings
.
Split
(
params
[
0
],
":"
)
if
len
(
strs
)
>
0
&&
strs
[
0
]
!=
""
{
...
...
@@ -307,13 +130,11 @@ func initBeforeHttpRun() {
}
go
GlobalSessions
.
GC
()
}
if
AutoRender
{
err
:=
BuildTemplate
(
ViewsPath
)
if
err
!=
nil
{
if
RunMode
==
"dev"
{
Warn
(
err
)
}
if
err
!=
nil
&&
RunMode
==
"dev"
{
Warn
(
err
)
}
}
...
...
@@ -338,7 +159,3 @@ func TestBeegoInit(apppath string) {
os
.
Chdir
(
AppPath
)
initBeforeHttpRun
()
}
func
init
()
{
hooks
=
make
([]
hookfunc
,
0
)
}
config.go
View file @
eb3479b7
...
...
@@ -29,7 +29,6 @@ import (
)
var
(
BeeApp
*
App
// beego application
AppName
string
AppPath
string
workPath
string
...
...
@@ -215,9 +214,6 @@ func (b *beegoAppConfig) SaveConfigFile(filename string) error {
}
func
init
()
{
// create beego application
BeeApp
=
NewApp
()
workPath
,
_
=
os
.
Getwd
()
workPath
,
_
=
filepath
.
Abs
(
workPath
)
// initialize default configurations
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment