完整项目地址: go-shop-b2c
系列文章:
前言
这篇就来讲解,一下要启动项目的一些基础配置,比如通过 bee 工具生成 model 层,CORS配置,router配置,日志配置等
Bee 工具生成 model 层
bee 工具简介
bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。
bee 工具的安装
go get -u github.com/beego/bee/v2
输入
bee version
如下图所示:
这里只能介绍 bee 根据 MySql 反向生成 api 应用
api 命令
bee api [appname] [-tables=""] [-driver=mysql] [-conn="root:<password>@tcp(127.0.0.1:3306)/test"]
可选命令介绍
- appname,生成 api 应用的名称
- -tables,顾名思义生成的表名,""表示反射全部表,如果输入固定表名,只反射输入的表名
- -driver,数据库驱动,支持Mysql、Oracle、Mongodb等
- -conn,连接地址,root:@tcp(127.0.0.1:3306)/test
输入如下命令:
bee api appname -tables="" -driver=mysql -conn="root:123456@tcp(127.0.0.1:3306)/go-shop-b2c"
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pGcVaJFS-1624946718087)(https://z3.ax1x.com/2021/04/26/gSbFsg.png)]
目录结构如下:
项目和SQL文件
项目路由设置
前面我们已经创建了 beego 项目,而且我们也看到它已经运行起来了,那么是如何运行起来的呢?让我们从入口文件先分析起来吧:
package main
import (
_ "quickstart/routers"
"github.com/beego/beego/v2/server/web"
)
func main() {
web.Run()
}
我们看到 main 函数是入口函数,但是我们知道 Go 的执行过程是如下图所示的方式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FrPPTN1G-1624946718098)(https://z3.ax1x.com/2021/04/26/gSXgHg.png)]
这里我们就看到了我们引入了一个包 _ “quickstart/routers”,这个包只引入执行了里面的 init 函数,那么让我们看看这个里面做了什么事情:
package routers
import (
"appname/controllers"
beego "github.com/beego/beego/v2/server/web"
)
func init() {
ns := beego.NewNamespace("/v1",
beego.NSNamespace("/ad",
beego.NSInclude(
&controllers.AdController{},
),
),
)
beego.AddNamespace(ns)
}
CORS 配置
api 项目通常都需要进行跨域配置,因为要方便前端本地调试,配置如下:
func corsInit() {
beego.InsertFilter("*", beego.BeforeRouter, cors.Allow(&cors.Options{
// 可选参数"GET", "POST", "PUT", "DELETE", "OPTIONS" (*为所有)
// 其中Options跨域复杂请求预检
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
// 指的是允许的Header的种类
AllowHeaders: []string{"Origin", "Authorization", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
// 公开的HTTP标头列表
ExposeHeaders: []string{"Content-Length", "Access-Control-Allow-Origin", "Access-Control-Allow-Headers", "Content-Type"},
// 如果设置,则允许共享身份验证凭据,例如cookie
AllowCredentials: true,
// 指定可访问域名AllowOrigins
AllowOrigins: []string{"*"},
}))
}
日志配置
_ = logs.SetLogger("console")
logs.EnableFuncCallDepth(true)