Name Last Update
README.md Loading commit data...
beego.go Loading commit data...
config.go Loading commit data...
context.go Loading commit data...
controller.go Loading commit data...
log.go Loading commit data...
model.go Loading commit data...
router.go Loading commit data...
template.go Loading commit data...
utils.go Loading commit data...

Beego

======= Beego is an open source version of the scalable, non-blocking web server and tools that power SNDA's CDN system. Documentation and downloads are available at https://github.com/astaxie/beego

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

Installation

============ To install:

go get github.com/astaxie/beego

go version: go1 release

Quick Start

============ Here is the canonical "Hello, world" example app for beego:

package main

import (
    "github.com/astaxie/beego"
)

type MainController struct {
    beego.Controller
}

func (this *MainController) Get() {
    this.Ct.WriteString("hello world")
}

func main() {
    beego.BeeApp.RegisterController("/", &MainController{})
    beego.BeeApp.Run()
}

default port:8080

http get http://localhost:8080
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Date: Sat, 15 Dec 2012 16:03:00 GMT
Transfer-Encoding: chunked

hello world

Router

============ In beego, a route is a struct paired with a URL-matching pattern. The strcut has many method with the same name of http method to server the http request. Each route is associated with a block:

beego.BeeApp.RegisterController("/", &controllers.MainController{})
beego.BeeApp.RegisterController("/admin", &admin.UserController{})
beego.BeeApp.RegisterController("/admin/index", &admin.ArticleController{})
beego.BeeApp.RegisterController("/admin/addpkg", &admin.AddController{})

You can specify custom regular expressions for routes:

beego.BeeApp.RegisterController("/admin/editpkg/:id([0-9]+)", &admin.EditController{})
beego.BeeApp.RegisterController("/admin/delpkg/:id([0-9]+)", &admin.DelController{})
beego.BeeApp.RegisterController("/:pkg(.*)", &controllers.MainController{})

You can also create routes for static files:

beego.BeeApp.SetStaticPath("/static","/public")

this will serve any files in /static, including files in subdirectories. For example request /static/logo.gif or /static/style/main.css will server with the file in the path /pulic/logo.gif or /public/style/main.css

Filters / Middleware

============ You can apply filters to routes, which is useful for enforcing security, redirects, etc.

You can, for example, filter all request to enforce some type of security:

var FilterUser = func(w http.ResponseWriter, r *http.Request) {
    if r.URL.User == nil || r.URL.User.Username() != "admin" {
        http.Error(w, "", http.StatusUnauthorized)
    }
}

beego.BeeApp.Filter(FilterUser)

You can also apply filters only when certain REST URL Parameters exist:

beego.BeeApp.RegisterController("/:id([0-9]+)", &admin.EditController{})
beego.BeeApp.FilterParam("id", func(rw http.ResponseWriter, r *http.Request) {
    ...
})

also You can apply filters only when certain prefix URL path exist:

beego.BeeApp.FilterPrefixPath("/admin", func(rw http.ResponseWriter, r *http.Request) {
    … auth 
})

Controller / Strcut

============

View / Template

============

Config

============

Logger

============