beego基础

介绍

技术 特性 适用场景 说明
Beego - RESTful支持
- 智能路由
- 智能监控
- 模块化
- 高性能
Go Web框架 - 官网
- Github
- Doc

安装

1
2
3
4
5
6
7
8
9
10
11
# 安装 beego
$ go get github.com/astaxie/beego

# 升级 beego
$ go get -u github.com/astaxie/beego

# 安装 bee
$ go get github.com/beego/bee

# 更新 bee
$ go get -u github.com/beego/bee

基础命令

bee command [agruments]

命令 说明
new 创建web应用程序
api 创建api应用程序
run 运行
pack 将项目压缩到单个文件中。可以通过上载和解压压缩文件到服务器来部署压缩文件。
bale 打包非Go文件到源文件。该命令目前仅对开发团队可用。它用于将所有静态文件压缩到一个二进制文件中,以便在发布项目时不需要携带静态文件,包括js、css、图像和视图。当程序启动时,这些文件将以非覆盖的方式自解压缩。
version 查看版本
generate 此命令将通过分析控制器中的函数生成路由器
migrate 运行数据库迁移脚本
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 创建Web项目
$ bee new <项目名>

# 创建API项目
$ bee api <项目名>

# 运行项目
## 此命令必须在 $GOPATH/src/appname 下执行。
## 该命令会监控 beego 的项目,通过 fsnotify监控文件系统,当有源码改动时,会自动编译再运行。
$ bee run

# 把项目打包成zip包
$ bee pack

# 打Linux平台包
$ bee pack -be GOOS=linux

# 打包并忽略某些文件
## 使用命令-exr用正则表达式忽略某些文件文件:
$ bee pack -be GOOS=linux -ba -exr='^[0-9a-f]|[*.iml]$'

# 生成代码

## 生成脚手架代码
$ bee generate scaffold [scaffoldname] [-fields=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]
## 示例
$ bee generate scaffold post -fields="title:string,body:text"

## 生成model
$ bee generate model [modelname] [-fields=""]

## 生成controller
$ bee generate controller [controllerfile]

## 生成view
$ bee generate view [viewpath]

## 生成数据库迁移文件
$ bee generate migration [migrationfile] [-fields=""]

## 生成docs
$ bee generate docs

## 生成单元测试
$ bee generate test [routerfile]

## 反向生成
### 基于已经存在的数据库反向生成appcode
$ bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]

## 数据库迁移

### 回滚
$ bee migrate rollback [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]

### 重置
```bash
$ bee migrate reset [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]

### 刷新
```bash
$ bee migrate refresh [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"]

# 显示版本
## 显示bee、beego的版本
$ bee version

配置

统一说明

配置文件中配置参数

/conf/app.conf

1
参数名 = 参数值

代码中配置参数

main.go

1
2
3
4
func main() {
beego.BConfig.[配置组].参数名 = 参数值
beego.Run()
}

APP配置

配置文件示例

1
2
3
4
5
6
7
8
9
10
11
#App配置 for Api
AppName = ApiService
RunMode = dev
RouterCaseSensitive = true
ServerName = ApiService
RecoverPanic = true
CopyRequestBody = true
EnableGzip = false
MaxMemory = 1 << 26
EnableErrorsShow = true
EnableErrorsRender = false

代码中配置

1
beego.BConfig.参数名 = 参数值

参数说明

参数 说明 默认值
AppName 应用名称
bee new 项目名 进行创建
RunMode 可选prod、dev、test。
dev为开发模式有日志打印
prod会关闭日志的打印
dev
RouterCaseSensitive 路由忽略大小写匹配 true
ServerName 服务器名称 beego
RecoverPanic 是否异常恢复,即当应用出现异常的情况,通过 recover 恢复回来,而不会导致应用异常退出。 true
CopyRequestBody 是否允许在 HTTP 请求时,返回原始请求体数据字节 true
EnableGzip 是否开启 gzip 支持。

一旦开启了 gzip,那么在模板输出的内容会进行 gzip 或者 zlib 压缩,根据用户的 Accept-Encoding 来判断。
web项目应该设置为true,通过流量的压缩加速网站开启速度,以及在有限的带宽条件下,支持更多人的访问。

Gzip允许用户自定义压缩级别、压缩长度阈值和针对请求类型压缩:
- 【压缩级别】 gzipCompressLevel = 9,取值为 1~9,默认为 1(最快压缩)
- 【压缩长度阈值】 gzipMinLength = 256,当原始内容长度大于此阈值时才开启压缩,默认为 20B(ngnix默认长度)
- 【请求类型】includedMethods = get;post,针对哪些请求类型进行压缩,默认只针对 GET 请求压缩
false
MaxMemory 文件上传默认内存缓存大小,默认值是 1 << 26(64M) 1 << 26
EnableErrorsShow 是否显示系统错误信息 true
EnableErrorsRender 是否将错误信息进行渲染,即出错会提示友好的出错页面,对于 API 类型的应用可能需要将该选项设置为 false 以阻止在 dev 模式下不必要的模板渲染信息返回。 true

Web配置

配置文件示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#Web配置 for Api
AutoRender = false
EnableDocs = true
FlashName = API_FLASH
FlashSeperator = APIFLASH
#==配合swagger使用start==
DirectoryIndex = true
StaticDir = swagger
#==配合swagger使用end==
StaticExtensionsToGzip = .css, .js
TemplateLeft = {{
TemplateRight = }}
ViewsPath = views
EnableXSRF = false
XSRFKEY = beegoxsrf
XSRFExpire = 0

代码中配置

1
beego.BConfig.WebConfig.参数名 = 参数值

参数说明

参数 说明 默认值
AutoRender 是否模板自动渲染。
对于 API 类型的应用,应用需要把该选项设置为 false,不需要渲染模板。
true
EnableDocs 是否开启文档内置功能。
API配合swagger时,设置为true。
false
FlashName Flash 数据设置时 Cookie 的名称 BEEGO_FLASH
FlashSeperator Flash 数据的分隔符 BEEGOFLASH
DirectoryIndex 是否开启静态目录的列表显示。
默认不显示目录,返回 403 错误。
配合swagger需要设置为true。
false
StaticDir 静态文件目录设置。
可配置单个或多个目录
static
StaticExtensionsToGzip 允许哪些后缀名的静态文件进行 gzip 压缩,默认支持 .css 和 .js 默认支持 .css 和 .js
TemplateLeft 模板左标签 { {
TemplateRight 模板右标签 } }
ViewsPath 模板路径 views
EnableXSRF 是否开启 XSRF false
XSRFKEY XSRF 的 key 信息
EnableXSRF=true 才有效
beegoxsrf
XSRFExpire XSRF 过期时间。
默认值是 0,不过期。
0

Listener配置

配置文件示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#listener配置
Graceful = false
ServerTimeOut = 30
ListenTCP4 = tcp4
EnableHTTP = true
HTTPAddr =
HTTPPort = 8080
EnableHTTPS = false
HTTPSAddr =
HTTPSPort = 10443
HTTPSCertFile = conf/ssl.crt
HTTPSKeyFile= conf/ssl.key
EnableAdmin = true
AdminAddr = localhost
AdminPort = 8088
EnableFcgi = false
EnableStdIo = false

代码中配置

1
beego.BConfig.Listen.参数名 = 参数值

参数说明

参数 说明 默认值
Graceful 是否开启热升级 false
ServerTimeOut 设置 HTTP 的超时时间,默认是 0,不超时。 0
ListenTCP4 监听本地网络地址类型,该值可以是 “tcp”, “tcp4”, “tcp6”, “unix” or “unixpacket” 之一。 tcp4
EnableHTTP 是否启用 HTTP 监听 true
HTTPAddr 应用监听地址,默认为空,监听所有的网卡 IP。 “”
HTTPPort 应用监听端口 8080
EnableHTTPS 是否启用 HTTPS。
当需要启用时,先设置 EnableHTTPS = true,并设置 HTTPSCertFile 和 HTTPSKeyFile
false
HTTPSAddr 应用监听地址,默认为空,监听所有的网卡 IP。 “”
HTTPSPort 应用监听端口 10443
HTTPSCertFile 开启 HTTPS 后,ssl 证书路径 “”
HTTPSKeyFile 开启 HTTPS 之后,SSL 证书 keyfile 的路径。
EnableAdmin 是否开启进程内监控模块 false
AdminAddr 监控程序监听的地址 localhost
AdminPort 监控程序监听的地址 8088
EnableFcgi 是否启用 fastcgi false
EnableStdIo 是否通过fastcgi 标准I/O,启用 fastcgi 后才生效 false

Session配置

配置文件示例

1
2
3
4
5
6
7
8
#Session配置
SessionOn = false
SessionProvider =
SessionName = beegosessionID
SessionGCMaxLifetime = 3600
SessionCookieLifeTime = 3600
SessionAutoSetCookie = true
SessionDomain =

代码中配置

1
beego.BConfig.WebConfig.Session.参数名 = 参数值

参数说明

参数 说明 默认值
SessionOn session 是否开启 false
SessionProvider session 的引擎 memory
SessionName 存在客户端的 cookie 名称 beegosessionID
SessionGCMaxLifetime session 过期时间 3600 秒
SessionProviderConfig 配置信息,根据不同的引擎设置不同的配置信息
SessionCookieLifeTime session 默认存在客户端的 cookie 的时间 3600 秒
SessionAutoSetCookie 是否开启SetCookie true
SessionDomain session cookie 存储域名 “”

Log配置

代码中配置

1
beego.BConfig.Log.参数名 = 参数值

参数说明

参数 说明 默认值
AccessLogs 是否输出日志到 Log。 false
FileLineNum 是否在日志里面显示文件名和输出日志行号。
此参数不支持配置文件配置。
true
Outputs 日志输出配置。
参考 logs 模块,console file 等配置。
此参数不支持配置文件配置。
-
坚持原创技术分享,您的支持将鼓励我继续创作!
0%