以前写go服务端用的都是原生写法,现在尝试用一下beego框架。

尝试:

  1. 新建项目。
  2. 文件结构分析。
  3. 简单的运行流程。
  4. 返回数据的方式。
  5. 返回json。

一、新建beego项目

  1. 先安装go环境,再安装bee工具。
  2. 找到GOPATH下的src路径,例如:D:\GOPATH\src,使用bee new 项目名创建web项目,或者使用bee api 项目名创建web api项目(restful),这里采用前一种项目。

二、各种文件的作用

1

(1)conf目录

存放beego的配置文件

(2)app.conf

app.conf文件中配置当前项目的信息,类似spring mvc中的web.xml(不完全是,更像是各种配置文件的混合)

(3)controllers目录

存放控制器,类似spring mvc中的controller包

(4)default.go

具体的控制器文件,类似spring mvc中的控制器类

(5)models目录

存放程序的逻辑部分,进行数据的提取、处里等。Web 应用中我们用的最多的就是数据库操作,而model层一般用来做这些操作,该目录就是用于存放model的。就像是spring mvc中的service包。

(6)routers目录

存放路由文件的目录。

(7)router.go

路由文件,负责匹配路径。作用就像是spring mvc中controller中的@RequestMapping。我觉得这个匹配方式挺复杂的,不如spring mvc中方便。

现在go也有一种注释的方法可以在controller文件中匹配路径了,但是这次不涉及。

(8)static目录

存放静态文件,类似spring mvc中的webapp目录

(9)tests目录

存放测试文件,类似spring mvc中的test包。

(10)default_test.go

测试文件。

(11)views目录

存放视图文件,但是我基本用的都是restful,基本上用不到。

(12)index.tpl

视图文件,通过映射展示后端数据,个人认为类似于jsp。

(13)main.go

程序入口,服务端程序的核心。可以在beego的Run()方法前执行一些项目的设置。

三、运行流程

简单叙述一下访问http://localhost:8080/的工作流程:

  1. 启动项目,beego读取配置文件,将项目映射到本地的8080端口上。
  2. 访问http://localhost:8080/,去到routers下的目录中寻找适配的路径。
  3. 找到适配的路径,调用controllers下的对应方法。

返回结果:hello。

四、如何返回数据?

我目前已知2种,常用的只有1种

(1)利用视图的映射

这个方法将把Website和Email映射到视图中,视图可以通过:{{.字段}}的方式来进行展示:

(2)使用WriteString()方法

常用,相对来说也比较简单。

五、返回json

(1)直接拼接json

最简单的用法。

(2)用go的原生方法先转成json,再以string的形式返回

简单的用法。

上面两种都是笨方法!

(3)直接返回结构对象

自定义一个json结构,然后直接返回对象,就会自动转成json。

有点像spring mvc中直接返回pojo。

这里要特别注意,结构的名称一定要用大写开头,不然无法识别结构,返回报错。结构中的字段一定要用大写开头,不然无法识别字段,返回一个空的json(当初写原生go的时候因为习惯不好被坑了一次,没想到这次又被坑了一次!)

(4)返回map

返回map会自动转成json。有点像spring mvc中直接返回map。(这里要注意,json不支持int类型开头,不要犯这个低级错误,否则报错(json只允许key值为字符类型))

六、实现效果

1

七、总结

beego还有很多高级用法,别人都说beego有点重量级了…之后慢慢研究吧。

发表评论

电子邮件地址不会被公开。 必填项已用*标注