【實踐】手把手教你入門BEEGO框架

1,摘要

beego 是一個快速開發(fā) Go 應(yīng)用的 HTTP 框架,他可以用來快速開發(fā) API、Web 及后端服務(wù)等各種應(yīng)用,是一個 RESTful 的框架,主要設(shè)計靈感來源于 tornado、sinatra 和 flask 這三個框架,但是結(jié)合了 Go 本身的一些特性(interface、struct 嵌入等)而設(shè)計的一個框架。

本文作為BEEGO的導(dǎo)入學(xué)習(xí)文檔,在WINDOWS操作系統(tǒng)下實施以下內(nèi)容:
(1)BeeGO的框架介紹;
(2)BeeGO安裝和項目創(chuàng)建
(3)BeeGo 參數(shù)配置與路由配置
(4)beeGo 自己寫Controller 和 請求數(shù)據(jù)處理

2, 入門實踐

2.1 BeeGO框架介紹

2.1.1 beego 的整體設(shè)計架構(gòu)

beego 的整體設(shè)計架構(gòu)如下所示:

beego 是基于八大獨立的模塊構(gòu)建的,是一個高度解耦的框架。當(dāng)初設(shè)計 beego 的時候就是考慮功能模塊化,用戶即使不使用 beego 的 HTTP 邏輯,也依舊可以使用這些獨立模塊,例如:
你可以使用 cache 模塊來做你的緩存邏輯;
使用日志模塊來記錄你的操作信息;
使用 config 模塊來解析你各種格式的文件。

所以 beego 不僅可以用于 HTTP 類的應(yīng)用開發(fā),在你的 socket 游戲開發(fā)中也是很有用的模塊,這也是 beego 為什么受歡迎的一個原因。大家如果玩過樂高的話,應(yīng)該知道很多高級的東西都是一塊一塊的積木搭建出來的,而設(shè)計 beego 的時候,這些模塊就是積木,高級機器人就是 beego。

2.1.2 beego 的執(zhí)行邏輯

既然 beego 是基于這些模塊構(gòu)建的,那么它的執(zhí)行邏輯是怎么樣的呢?beego 是一個典型的 MVC 架構(gòu),它的執(zhí)行邏輯如下圖所示:

2.1.3 beego 項目結(jié)構(gòu)

一般的 beego 項目的目錄如下所示:

├── conf
│   └── app.conf
├── controllers
│   ├── admin
│   └── default.go
├── main.go
├── models
│   └── models.go
├── static
│   ├── css
│   ├── ico
│   ├── img
│   └── js
└── views
    ├── admin
    └── index.tpl

從上面的目錄結(jié)構(gòu)我們可以看出來 M(models 目錄)、V(views 目錄)和 C(controllers 目錄)的結(jié)構(gòu), main.go 是入口文件。

2.2 BeeGO創(chuàng)建項目

2.2.1 bee 工具的安裝

可以通過如下的方式安裝 bee 工具:

go get github.com/beego/bee

安裝完之后,bee 可執(zhí)行文件默認(rèn)存放在$GOPATH/bin里面,所以您需要把$GOPATH/bin添加到您的環(huán)境變量中,才可以進行下一步。

如何添加環(huán)境變量,請自行搜索
例如,
輝哥在WINDOWS系統(tǒng)下,直接把GOBIN的目錄D:\jusanban\doc\50-編碼實現(xiàn)\GO\bin放置到Path變量中。

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

 D:\jusanban\doc\50-編碼實現(xiàn)\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 創(chuàng)建項目目錄

安裝好以后兩個命令可用于創(chuàng)建項目目錄。我們需要注意的:

1) new命令,new命令是一個新建web項目的,我們在命令行下執(zhí)行 bee new 項目名稱就可以創(chuàng)建一個新的項目,但是注意該命令必須在 $GOPATH/src下執(zhí)行

2)api命令,上面的new命令用來創(chuàng)建web項目,不過很多用戶使用beego來開發(fā)api應(yīng)用,所以這個api命令就是用來創(chuàng)建API應(yīng)用的。

2.2.2.1 創(chuàng)建一個WEB項目

new 命令是新建一個 Web 項目,我們在命令行下執(zhí)行 bee new <項目名> 就可以創(chuàng)建一個新的項目。但是注意該命令必須在$GOPATH/src 下執(zhí)行。最后會在 $GOPATH/src 相應(yīng)目錄下生成如下目錄結(jié)構(gòu)的項目:

D:\jusanban\doc\50-編碼實現(xiàn)\GO\src> bee new myproject
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.10.0
2019/03/19 11:49:51 INFO     ? 0001 Creating application...
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\conf\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\controllers\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\models\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\routers\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\tests\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\static\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\static\js\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\static\css\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\static\img\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\views\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\conf\app.conf
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\controllers\default.go
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\views\index.tpl
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\routers\router.go
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\tests\default_test.go
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\myproject\main.go
2019/03/19 11:49:51 SUCCESS  ? 0002 New application successfully created!

創(chuàng)建的目錄結(jié)構(gòu)如下:

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 files

2.2.2.2 創(chuàng)建一個API項目

上面的 new 命令是用來新建 Web 項目,不過很多用戶使用 beego 來開發(fā) API 應(yīng)用。所以這個 api 命令就是用來創(chuàng)建 API 應(yīng)用的,執(zhí)行命令之后如下所示:

D:\jusanban\doc\50-編碼實現(xiàn)\GO\src> bee api apiproject
______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.10.0
2019/03/19 11:53:17 INFO     ? 0001 Creating API...
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\conf
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\controllers
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\tests
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\conf\app.conf
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\models
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\routers\
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\controllers\object.go
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\controllers\user.go
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\tests\default_test.go
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\routers\router.go
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\models\object.go
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\models\user.go
        create   D:\jusanban\doc\50-編碼實現(xiàn)\GO\src\apiproject\main.go
2019/03/19 11:53:17 SUCCESS  ? 0002 New API successfully created!

這個項目的目錄結(jié)構(gòu)如下:

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 模塊,用來做單元測試的。

同時,該命令還支持一些自定義參數(shù)自動連接數(shù)據(jù)庫創(chuàng)建相關(guān) model 和 controller:

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

如果 conn 參數(shù)為空則創(chuàng)建一個示例項目,否則將基于鏈接信息鏈接數(shù)據(jù)庫創(chuàng)建項目。

2.2.3 運行WEB項目

我們在開發(fā) Go 項目的時候最大的問題是經(jīng)常需要自己手動去編譯再運行,bee run 命令是監(jiān)控 beego 的項目,通過 fsnotify監(jiān)控文件系統(tǒng)。但是注意該命令必須在 $GOPATH/src/myproject 下執(zhí)行。
這樣我們在開發(fā)過程中就可以實時的看到項目修改之后的效果:

D:\jusanban\doc\50-編碼實現(xiàn)\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",我們就可以看到命令行輸出:

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://:8080

3,參考

(1)BeeGo 介紹與項目的創(chuàng)建,啟動
https://www.cnblogs.com/liaojiafa/p/7806909.html

(2)BeeGo 參數(shù)配置與路由配置
https://www.cnblogs.com/liaojiafa/p/7806914.html

(3)beeGo 自己寫Controller 和 請求數(shù)據(jù)處理
https://www.cnblogs.com/liaojiafa/p/7806917.html

(4)beego手冊
https://beego.me/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Beego官網(wǎng)本身已經(jīng)整理的非常詳細了,但是作為一個學(xué)習(xí)者,我還是決定自己好好整理一下,這樣在后面使用的時候自己對...
    上下求索zsh閱讀 819評論 0 0
  • beego簡介 Beego是一個快速開發(fā)Go應(yīng)用的http框架,可用于快速開發(fā)Api、web及后端服務(wù)等各種應(yīng)用,...
    EvansChang閱讀 5,149評論 0 6
  • Golang學(xué)習(xí)-第三篇 認(rèn)識Web框架 2017-10-04 Golang語言社區(qū) 文 | 盞茶_作酒 共 20...
    HuJay閱讀 586評論 0 0
  • mysql是apt-get安裝的1.給賬戶連接的權(quán)限 2.在mysqld.cnf找到bind-address = ...
    Mr_Laoyu閱讀 310評論 0 0
  • 添加依賴dependencies {? compile 'com.android.support.constra...
    shenghuiche閱讀 623評論 0 0

友情鏈接更多精彩內(nèi)容