beego 快速上手


beego 快速上手

beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架

主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架


1 下载 beego

    $ go get github.com/astaxie/beego
    $ go get github.com/beego/bee 

会生成一个可执行文件在bin目录下

(要把GOPATH/bin 添加到环境变量中)


2 建立一个应用来检测安装

》 cd 到 src 中 执行  bee new  hello 

    ______
    | ___ \
    | |_/ /  ___   ___
    | ___ \ / _ \ / _ \
    | |_/ /|  __/|  __/
    \____/  \___| \___| v1.9.1
    2018/06/13 18:30:28 WARN     ▶ 0001 You current workdir is not inside $GOPATH/src.
    2018/06/13 18:30:28 INFO     ▶ 0002 Creating application...
            create   D:\goprogram\src\hello\
            create   D:\goprogram\src\hello\conf\
            create   D:\goprogram\src\hello\controllers\
            create   D:\goprogram\src\hello\models\
            create   D:\goprogram\src\hello\routers\
            create   D:\goprogram\src\hello\tests\
            create   D:\goprogram\src\hello\static\
            create   D:\goprogram\src\hello\static\js\
            create   D:\goprogram\src\hello\static\css\
            create   D:\goprogram\src\hello\static\img\
            create   D:\goprogram\src\hello\views\
            create   D:\goprogram\src\hello\conf\app.conf
            create   D:\goprogram\src\hello\controllers\default.go
            create   D:\goprogram\src\hello\views\index.tpl
            create   D:\goprogram\src\hello\routers\router.go
            create   D:\goprogram\src\hello\tests\default_test.go
            create   D:\goprogram\src\hello\main.go
    2018/06/13 18:30:28 SUCCESS  ▶ 0003 New application successfully created!


》   cd  hello 项目中  运行   bee  run hello 

    ______
    | ___ \
    | |_/ /  ___   ___
    | ___ \ / _ \ / _ \
    | |_/ /|  __/|  __/
    \____/  \___| \___| v1.9.1
    2018/06/13 18:33:34 INFO     ▶ 0001 Using 'hello' as 'appname'
    2018/06/13 18:33:34 INFO     ▶ 0002 Initializing watcher...
    hello/controllers
    hello/routers
    hello
    2018/06/13 18:33:38 SUCCESS  ▶ 0003 Built Successfully!
    2018/06/13 18:33:38 INFO     ▶ 0004 Restarting 'hello'...
    2018/06/13 18:33:38 SUCCESS  ▶ 0005 './hello' is running...
    2018/06/13 18:33:39.163 [I] [asm_amd64.s:2361] http server Running on http://:8080
    2018/06/13 18:33:39.247 [C] [asm_amd64.s:2361] ListenAndServe:  listen tcp :8080: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

默认端口 是 localhost:8080 当然可以 更改这个参数


        main.go
        
        package main
        import (
                _ "hello/routers"
                "github.com/astaxie/beego"
        )
        
        func main() {
                beego.Run(":8081")    //  更改端口
        }

入口文件 main.go

 
    package main
    import (
        _ "hello/routers"
        "github.com/astaxie/beego"
    )
    
    type MainController struct {   //  定义 Controller,这里我们定义了一个 struct 为 MainController,充分利用了 Go 	语言的组合的概念,匿名包含了 beego.Controller,这样我们的 MainController 就拥有了 beego.Controller 的所有方法。
        beego.Controller
    }
    
    func (this *MainController) Get() {  // 定义 RESTful 方法,通过匿名组合之后,其实目前的 MainController 已经拥有了 Get、Post、Delete、Put 等方法,这些方法是分别用来对应用户请求的 Method 函数,如果用户发起的是 POST 请求,那么就执行 Post 函数。所以这里我们定义了 MainController 的 Get 方法用来重写继承的 Get 函数,这样当用户发起 GET 请求的时候就会执行该函数。
    
        this.Ctx.WriteString("Hello world")
    }
    
    func main() {
        beego.Router("/index", &MainController{})  //  Router 注册路由,路由就是告诉 beego,当用户来请求的时候,该如何去调用相应的 Controller,这里我们注册了请求 / 的时候,请求到 MainController。这里我们需要知道,Router 函数的两个参数函数,第一个是路径,第二个是 Controller 的指针。
        beego.Run(":8081")   // Run 应用,最后一步就是把在导入包 初始化的 BeeApp 开启起来,其实就是内部监听了 8081 端口:Go 默认情况会监听你本机所有的 IP 上面的 8080 端口
    }


Buy me a 肥仔水!