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

celverbamboo · · 1805 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

完整项目地址: [go-shop-b2c](https://github.com/CleverBamboo/go-shop-b2c) 系列文章: * [手摸手,带你用 Beego撸商城 系列一(基础篇)](https://cleverbamboo.github.io/2021/03/30/GO/手摸手,带你用Beego撸商城系列一(基础篇)/) * [手摸手,带你用 Beego撸商城 系列二(登录篇)](https://cleverbamboo.github.io/2021/04/01/GO/手摸手,带你用Beego撸商城系列二(登录篇)/) * [手摸手,带你用 Beego撸商城 系列三(系统配置篇)](https://cleverbamboo.github.io/2021/04/09/GO/手摸手,带你用Beego撸商城系列三(系统配置篇)/) ## 前言 这篇就来讲解,一下要启动项目的一些基础配置,比如通过 bee 工具生成 model 层,CORS配置,router配置,日志配置等 <!--more--> ## Bee 工具生成 model 层 ### bee 工具简介 bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。 ### bee 工具的安装 ``` go get -u github.com/beego/bee/v2 ``` 输入 ``` bee version ``` 如下图所示: ![](https://z3.ax1x.com/2021/04/26/gSoA4f.png) **这里只能介绍 bee 根据 MySql 反向生成 api 应用** ### api 命令 ```shell script 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:<password>@tcp(127.0.0.1:3306)/test 输入如下命令: ```shell script bee api appname -tables="" -driver=mysql -conn="root:123456@tcp(127.0.0.1:3306)/go-shop-b2c" ``` ![](https://z3.ax1x.com/2021/04/26/gSbFsg.png) 目录结构如下: ![](https://z3.ax1x.com/2021/04/26/gSb2fP.png) ### 项目和SQL文件 * [点击跳转](https://github.com/CleverBamboo/appname) ## 项目路由设置 前面我们已经创建了 beego 项目,而且我们也看到它已经运行起来了,那么是如何运行起来的呢?让我们从入口文件先分析起来吧: ```go package main import ( _ "quickstart/routers" "github.com/beego/beego/v2/server/web" ) func main() { web.Run() } ``` 我们看到 main 函数是入口函数,但是我们知道 Go 的执行过程是如下图所示的方式: ![](https://z3.ax1x.com/2021/04/26/gSXgHg.png) 这里我们就看到了我们引入了一个包 _ "quickstart/routers",这个包只引入执行了里面的 init 函数,那么让我们看看这个里面做了什么事情: ```go 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 项目通常都需要进行跨域配置,因为要方便前端本地调试,配置如下: ```go 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{"*"}, })) } ``` ## 日志配置 ```go _ = logs.SetLogger("console") logs.EnableFuncCallDepth(true) ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1805 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传