beego 框架搭建和简单http路由请求

beego 框架搭建和简单http路由请求

闲来无事,学习Go的服务器框架beego。

beego 框架搭建:

先安装Golang,这个不会的可以看http://bartontang.github.io/2016/03/31/Golang-环境配置与安装/
直接github下载bee工具

1
go get github.com/beego/bee

安装完成后可通过bee命令来查看是否安装成功,这里不好的是安装bee工具的时候木有任何进度显示不太科学,成功后如下所示:

OK,接着我们需要在$GOPATH/src目录下new 一个新的project,切记执行bee new YourPorjectName 这个命令的时候必须是在GOPATH/src目录下

工程创建完后直接执行,在工程目录下直接执行

1
bee run

那么服务器就在8080端口启动起来了,如下所示:

这里我把配置表里的8088监控端口打开了,具体的配置文件在 /conf/app.conf 文件里

1
2
3
4
5
6
appname = quickstart
httpport = 8080
runmode = dev
EnableAdmin = true
AdminAddr = "localhost"
AdminPort = 8088

这部分大家可以先忽略~现在服务器已经跑起来了,我们用网页打开http://localhost:8080 就能看到一个beego的页面了。
好,安装就先到这里。接下来我们来看下路由和简单的http请求。

简单http路由请求:

打开/routers/route.go文件

1
2
3
4
5
6
7
8
9
10
11
package routers
import (
"github.com/astaxie/beego"
"quickstart/controllers"
)
func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/test", &controllers.TestController{})
}

这里仿照default增加了一个url并把路由处理映射到TestController中

接下来我们看一下TestController.go中的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package controllers
import (
"github.com/astaxie/beego"
)
type TestController struct {
beego.Controller
}
func (c *TestController) Get() {
c.Data["json"] = map[string]interface{}{"rc": 1,
"msg": "success",
"data": false,
}
c.ServeJSON()
}
func (c *TestController) Post() {
account := c.GetString("account")
password := c.GetString("password")
beego.Info(account)
c.Data["json"] = map[string]interface{}{"rc": 1,
"msg": "success",
"data": map[string]interface{}{
"account": account,
"password": password,
},
}
c.ServeJSON()
}

这里分别对Get和Post都做了处理~Get就直接返回一个Json数据给Client;Post呢则是接收Client传过来的两个Json字段account 和 password 并且将account 和 password再重新发回给Client。
beego.Info(account) 这句话是打印account出来

下面就用swift做个小测试,下面这个是自己封装过的代码,先随便贴下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
let t = NetworkController.shareManager()
t.request(.GET, "http://localhost:8080/test").responseJSON { (resp: Response<AnyObject, NSError>) in
print(resp.request) // original URL request
print(resp.response) // URL response
print(resp.data) // server data
print(resp.result) // result of response serialization
DDLogError(resp.debugDescription)
if let JSON = resp.result.value {
print("JSON: \(JSON)")
let account = JSON.objectForKey("msg")!
print("----------account = \(account)")
}
}
t.request(.POST, "http://localhost:8080/test", parameters: ["account": "13800138000", "password": "123456"]).responseJSON { (resp:Response<AnyObject, NSError>) in
print(resp.request) // original URL request
print(resp.response) // URL response
print(resp.data) // server data
print(resp.result) // result of response serialization
DDLogError(resp.debugDescription)
if let JSON = resp.result.value {
DDLogWarn("JSON: \(JSON)")
}
}

server端结果如下:

这里我们看到我们收到了连个请求,一个Get一个Post而且我们把Post数据中的account打印出来啦~~

client端结果如下:

我们成功的获取了server回给client的json数据。

先写这么多,后面会讲讲怎么将beego部署到阿里云上~!