beego使用示例

安装beego框架

1
go get github.com/astaxie/beego

创建项目:beego

  • 创建
1
bee new beego
  • 生成如下目录结构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.
├── conf
│   └── app.conf
├── controllers
│   └── default.go
├── main.go
├── models
├── routers
│   └── router.go
├── static
│   ├── css
│   ├── img
│   └── js
│   └── reload.min.js
├── tests
│   └── default_test.go
└── views
└── index.tpl

优雅的使用beego

注:示例代码见文末链接

  1. 代码分层

    • controller:业务流程封装层

    • service:业务封装层

    • model:数据层

      • data:数据逻辑层

      • dao:数据操作层

举个例子(客服端付款方式):购买商品分为这么几个业务逻辑:

  1. 本地添加订单记录

  2. 向支付中心发起支付请求

  3. 更新本地订单状态

  4. 下发支付参数

对于三个层要做的事情分别是:

  • dao层

    1. mysql中订单表添加操作

    2. mysql中订单状态更新操作

    3. 对应缓存操作

    4. 其他附属表及缓存的操作

  • data层

    1. 提供订单添加操作(mysql+redis)

    2. 提供订单表的状态更新操作(mysql+redis)

  • servic层

    1. 封装一个本地添加订单的逻辑(包含订单表+其他表)

    2. 封装一个请求支付成功的业务方法

    3. 封装支付中心请求下单接口

  • controller层

    1. 先本地下单(service中的1方法)-> 向支付中心下单 -> 更新订单状态(service中2方法)
1
2
3
4
5
6
7
8
9
10
11
12
├── controllers
│   └── order.go
├── models
│   ├── dao
│   │   ├── mysql
│   │   │   └── order.go
│   │   └── redis
│   │   └── order.go
│   └── data
│   └── order.go
├── service
│   └── order.go
  1. 配置文件的使用
    注:pro定义线上配置;dev为测试配置;发布代码时定义钩子;用pro替换app
1
2
3
4
├── conf
│   ├── app.conf
│   ├── dev.conf
│   └── pro.conf
  1. 使用定时脚本
1
2
├── tasks
│   └── test.go

运行

1
bee run

部署及发布

  1. 编译beego
  • 使用go build,最后会生成一个main的二进制文件
1
go build main.go
  • 使用beego,最后生成和项目名称相同的二进制文件
1
beego run

注意:如果是在mac环境开发编译,在linux运行会报错,需要使用以下方式在mac编译

1
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

  1. 部署beego
  • go编译生产的的二进制文件

  • 静态文件

    • conf
    • static
    • views
  • 假设data是待发布目录

1
2
3
4
5
6
7
8
9
10
11
cp -R main data
cp -R beego/conf data
cp -R beego/static data
cp -R beego/views data
tar -zcvf data.tar.gz data
scp data.tar.gz online:/tmp
  1. 运行go
  • 后台运行

    • go进程down掉,无法监控重启
      1
      nohup ./main &
  • 使用supervisor

    • 可对go进程进行监控并重启等

beego文档

代码示例

坚持原创技术分享,您的支持将鼓励我继续创作!