Beego/README.md

114 lines
3.0 KiB
Markdown
Raw Normal View History

2012-12-15 16:21:38 +00:00
## Beego
2012-03-05 14:20:28 +00:00
=======
Beego is an open source version of the scalable, non-blocking web server
2012-03-05 14:24:45 +00:00
and tools that power SNDA's CDN system. Documentation and downloads are
2012-03-30 15:50:13 +00:00
available at https://github.com/astaxie/beego
2012-03-05 14:20:28 +00:00
Beego is licensed under the Apache Licence, Version 2.0
(http://www.apache.org/licenses/LICENSE-2.0.html).
2012-12-15 16:21:38 +00:00
## Installation
2012-03-05 14:20:28 +00:00
============
To install:
2012-12-15 16:24:12 +00:00
go get github.com/astaxie/beego
2012-03-05 14:24:45 +00:00
go version: go1 release
2012-12-15 16:21:38 +00:00
## 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
2012-12-15 16:21:38 +00:00
## 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
============
2012-12-15 16:34:45 +00:00
You can apply filters to routes, which is useful for enforcing security, redirects, etc.
2012-12-15 16:21:38 +00:00
2012-12-15 16:34:45 +00:00
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
})
2012-12-15 16:42:22 +00:00
## Controller / Strcut
============
## View / Template
============
## Config
============
## Logger
============
2012-12-15 16:21:38 +00:00