【实践】手把手教你入门BEEGO框架

【实践】手把手教你入门BEEGO框架

1,摘要beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。

本文作为BEEGO的导入学习文档,在WINDOWS操作系统下实施以下内容:

(1)BeeGO的框架介绍;

(2)BeeGO安装和项目创建

(3)BeeGo 参数配置与路由配置

(4)beeGo 自己写Controller 和 请求数据处理

2, 入门实践2.1 BeeGO框架介绍2.1.1 beego 的整体设计架构beego 的整体设计架构如下所示:

beego 是基于八大独立的模块构建的,是一个高度解耦的框架。当初设计 beego 的时候就是考虑功能模块化,用户即使不使用 beego 的 HTTP 逻辑,也依旧可以使用这些独立模块,例如:

你可以使用 cache 模块来做你的缓存逻辑;

使用日志模块来记录你的操作信息;

使用 config 模块来解析你各种格式的文件。

所以 beego 不仅可以用于 HTTP 类的应用开发,在你的 socket 游戏开发中也是很有用的模块,这也是 beego 为什么受欢迎的一个原因。大家如果玩过乐高的话,应该知道很多高级的东西都是一块一块的积木搭建出来的,而设计 beego 的时候,这些模块就是积木,高级机器人就是 beego。

2.1.2 beego 的执行逻辑既然 beego 是基于这些模块构建的,那么它的执行逻辑是怎么样的呢?beego 是一个典型的 MVC 架构,它的执行逻辑如下图所示:

2.1.3 beego 项目结构一般的 beego 项目的目录如下所示:

代码语言:javascript复制├── conf

│ └── app.conf

├── controllers

│ ├── admin

│ └── default.go

├── main.go

├── models

│ └── models.go

├── static

│ ├── css

│ ├── ico

│ ├── img

│ └── js

└── views

├── admin

└── index.tpl从上面的目录结构我们可以看出来 M(models 目录)、V(views 目录)和 C(controllers 目录)的结构, main.go 是入口文件。

2.2 BeeGO创建项目2.2.1 bee 工具的安装可以通过如下的方式安装 bee 工具:

代码语言:javascript复制 go get github.com/beego/bee安装完之后,bee 可执行文件默认存放在$GOPATH/bin里面,所以您需要把$GOPATH/bin添加到您的环境变量中,才可以进行下一步。

如何添加环境变量,请自行搜索

例如,

辉哥在WINDOWS系统下,直接把GOBIN的目录D:\jusanban\doc\50-编码实现\GO\bin放置到Path变量中。

安装好后,输入在命令行输入 bee,可以看到如下的信息就表示安装成功。

代码语言:javascript复制 D:\jusanban\doc\50-编码实现\GO\src> bee

Bee is a Fast and Flexible tool for managing your Beego Web Application.

USAGE

bee command [arguments]

AVAILABLE COMMANDS

version Prints the current Bee version

migrate Runs database migrations

api Creates a Beego API application

bale Transforms non-Go files to Go source files

fix Fixes your application by making it compatible with newer versions of Beego

dlv Start a debugging session using Delve

dockerize Generates a Dockerfile for your Beego application

generate Source code generator

hprose Creates an RPC application based on Hprose and Beego frameworks

new Creates a Beego application

pack Compresses a Beego application into a single file

rs Run customized scripts

run Run the application by starting a local development server

server serving static content over HTTP on port

Use bee help [command] for more information about a command.

ADDITIONAL HELP TOPICS

Use bee help [topic] for more information about that topic.2.2.2 创建项目目录安装好以后两个命令可用于创建项目目录。我们需要注意的:

1) new命令,new命令是一个新建web项目的,我们在命令行下执行 bee new 项目名称就可以创建一个新的项目,但是注意该命令必须在 $GOPATH/src下执行

2)api命令,上面的new命令用来创建web项目,不过很多用户使用beego来开发api应用,所以这个api命令就是用来创建API应用的。

2.2.2.1 创建一个WEB项目new 命令是新建一个 Web 项目,我们在命令行下执行 bee new <项目名> 就可以创建一个新的项目。但是注意该命令必须在$GOPATH/src 下执行。最后会在 $GOPATH/src 相应目录下生成如下目录结构的项目:

代码语言:javascript复制D:\jusanban\doc\50-编码实现\GO\src> bee new myproject

______

| ___ \

| |_/ / ___ ___

| ___ \ / _ \ / _ \

| |_/ /| __/| __/

\____/ \___| \___| v1.10.0

2019/03/19 11:49:51 INFO ▶ 0001 Creating application...

create D:\jusanban\doc\50-编码实现\GO\src\myproject\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\conf\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\controllers\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\models\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\routers\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\tests\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\static\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\static\js\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\static\css\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\static\img\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\views\

create D:\jusanban\doc\50-编码实现\GO\src\myproject\conf\app.conf

create D:\jusanban\doc\50-编码实现\GO\src\myproject\controllers\default.go

create D:\jusanban\doc\50-编码实现\GO\src\myproject\views\index.tpl

create D:\jusanban\doc\50-编码实现\GO\src\myproject\routers\router.go

create D:\jusanban\doc\50-编码实现\GO\src\myproject\tests\default_test.go

create D:\jusanban\doc\50-编码实现\GO\src\myproject\main.go

2019/03/19 11:49:51 SUCCESS ▶ 0002 New application successfully created!创建的目录结构如下:

代码语言:javascript复制myproject

├── conf

│ └── app.conf

├── controllers

│ └── default.go

├── main.go

├── models

├── routers

│ └── router.go

├── static

│ ├── css

│ ├── img

│ └── js

├── tests

│ └── default_test.go

└── views

└── index.tpl

8 directories, 4 files2.2.2.2 创建一个API项目上面的 new 命令是用来新建 Web 项目,不过很多用户使用 beego 来开发 API 应用。所以这个 api 命令就是用来创建 API 应用的,执行命令之后如下所示:

代码语言:javascript复制D:\jusanban\doc\50-编码实现\GO\src> bee api apiproject

______

| ___ \

| |_/ / ___ ___

| ___ \ / _ \ / _ \

| |_/ /| __/| __/

\____/ \___| \___| v1.10.0

2019/03/19 11:53:17 INFO ▶ 0001 Creating API...

create D:\jusanban\doc\50-编码实现\GO\src\apiproject

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\conf

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\controllers

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\tests

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\conf\app.conf

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\models

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\routers\

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\controllers\object.go

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\controllers\user.go

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\tests\default_test.go

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\routers\router.go

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\models\object.go

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\models\user.go

create D:\jusanban\doc\50-编码实现\GO\src\apiproject\main.go

2019/03/19 11:53:17 SUCCESS ▶ 0002 New API successfully created!这个项目的目录结构如下:

代码语言:javascript复制apiproject

├── conf

│ └── app.conf

├── controllers

│ └── object.go

│ └── user.go

├── docs

│ └── doc.go

├── main.go

├── models

│ └── object.go

│ └── user.go

├── routers

│ └── router.go

└── tests

└── default_test.go从上面的目录我们可以看到和 Web 项目相比,少了 static 和 views 目录,多了一个 test 模块,用来做单元测试的。

同时,该命令还支持一些自定义参数自动连接数据库创建相关 model 和 controller:

bee api [appname] [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]

如果 conn 参数为空则创建一个示例项目,否则将基于链接信息链接数据库创建项目。

2.2.3 运行WEB项目我们在开发 Go 项目的时候最大的问题是经常需要自己手动去编译再运行,bee run 命令是监控 beego 的项目,通过 fsnotify监控文件系统。但是注意该命令必须在 $GOPATH/src/myproject 下执行。

这样我们在开发过程中就可以实时的看到项目修改之后的效果:

代码语言:javascript复制D:\jusanban\doc\50-编码实现\GO\src\myproject> bee run

______

| ___ \

| |_/ / ___ ___

| ___ \ / _ \ / _ \

| |_/ /| __/| __/

\____/ \___| \___| v1.10.0

2019/03/19 11:56:40 INFO ▶ 0001 Using 'myproject' as 'appname'

2019/03/19 11:56:40 INFO ▶ 0002 Initializing watcher...

myproject/controllers

myproject/routers

myproject

2019/03/19 11:56:51 SUCCESS ▶ 0003 Built Successfully!

2019/03/19 11:56:51 INFO ▶ 0004 Restarting 'myproject.exe'...

2019/03/19 11:56:51 SUCCESS ▶ 0005 './myproject.exe' is running...

2019/03/19 11:56:54.696 [I] [asm_amd64.s:1337] http server Running on http://:8080我们打开浏览器就可以看到效果 http://localhost:8080/:

如果我们修改了 Controller 下面的 default.go 文件,把EMAIL的地址改为c.Data["Email"] = "duncanwang@gmail.com",我们就可以看到命令行输出:

代码语言:javascript复制2019/03/19 12:01:19 SUCCESS ▶ 0006 Built Successfully!

2019/03/19 12:01:19 INFO ▶ 0007 Restarting 'myproject.exe'...

2019/03/19 12:01:19 SUCCESS ▶ 0008 './myproject.exe' is running...

2019/03/19 12:01:23.133 [I] [asm_amd64.s:1337] http server Running on http://:80803,参考(1)BeeGo 介绍与项目的创建,启动

https://www.cnblogs.com/liaojiafa/p/7806909.html

(2)BeeGo 参数配置与路由配置

https://www.cnblogs.com/liaojiafa/p/7806914.html

(3)beeGo 自己写Controller 和 请求数据处理

https://www.cnblogs.com/liaojiafa/p/7806917.html

(4)beego手册

https://beego.me/

🌈 相关推荐

乔任梁有多少资产,因抑郁年少薄命
365网络股份有限公司总部

乔任梁有多少资产,因抑郁年少薄命

📅 10-28 👁️ 8958
Win11如何增加网络映射?如何配置映射步骤详细?
365网络股份有限公司总部

Win11如何增加网络映射?如何配置映射步骤详细?

📅 07-10 👁️ 7288
朋友圈说mark一下是什么意思 朋友圈的mark啥意思
365网络股份有限公司总部

朋友圈说mark一下是什么意思 朋友圈的mark啥意思

📅 11-01 👁️ 2784