手摸手,带你用Beego撸商城系列三(系统配置篇)

完整项目地址: 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

如下图所示:
手摸手,带你用Beego撸商城系列三(系统配置篇)

这里只能介绍 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)]

目录结构如下:
手摸手,带你用Beego撸商城系列三(系统配置篇)

项目和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)
上一篇:golang多语言支持


下一篇:golang中的pprof支持