天天看点

使用Beego框架开发后端-2.前后端交互

搭建完beego框架后,我们开始写自己的应用和需求。

目前要做的需求是预约功能,注册功能,日历功能。

创建新功能

第一步,在controllers文件夹里面新建三个功能的go程序

初始代码就直接复制default.go,改一下名字就好

使用Beego框架开发后端-2.前后端交互

router.go添加三个功能对应页面的路由:

package routers

import (
  "github.com/astaxie/beego"
  "webBack/controllers"
)

func init() {
  beego.Router("/", &controllers.MainController{})
  beego.Router("/book", &controllers.BookController{})
  beego.Router("/calendar", &controllers.CalendarController{})
  beego.Router("/register", &controllers.RegisterController{})
}      

新建utils文件夹,放入功能函数的代码

使用Beego框架开发后端-2.前后端交互

views建立三个功能的前端页面

使用Beego框架开发后端-2.前后端交互

好了,现在localhost:8080/book就对应着book.tpl和它的功能了,另外的两个也是类似。

数据交互

以book为例,我们做一个预约的简易前端book.tpl

boot.tpl中有如下表单,在下面这个表单中,定义了一些变量

<form name="book" onsubmit="return CheckPost();">
        手机号:<input name="phone" type="text" />
        时间:<input name="time" type="text" />
        房间:<input name="room" type="text" />
        <input type="submit" value="提交"/>
      </form>      

我们同样在models里面的model.go定义如下结构体,beego能够直接根据表单元素的名字获取值

type Book struct {
  Phone string `form:"phone"`
  Time  string `form:"time"`
  Room  string `form:"room"`
}      

controllers里的book.go进行数据处理,记得submit默认是Get()方法,那我们重写Get()方法:

func (c *BookController) Get() {
  c.TplName = "book.tpl"
  bookInfo := models.Book{}
  if err := c.ParseForm(&bookInfo); err != nil {
    panic(err) //handle error
  }
  if len(bookInfo.Phone) == 11 && bookInfo.Time != "" && bookInfo.Room != ""{
    fmt.Println(bookInfo.Phone + " " + bookInfo.Time + " " + bookInfo.Room)
    utils.GenerateKey(bookInfo.Phone, bookInfo.Time, bookInfo.Room)
    utils.GenerateData(bookInfo.Phone, bookInfo.Time, bookInfo.Room)
    utils.GenerateQR(bookInfo.Phone)
    c.Post()
  }
}      

记得检查数据是否合法

这样子,一个简易的前后端交互就完成了。

测试

打开localhost:8080/book,转到book.tpl界面,有如下表单,填写信息:

使用Beego框架开发后端-2.前后端交互

点击提交,控制台打印如下信息,可以看到已经收到前面传来的信息

使用Beego框架开发后端-2.前后端交互

那就继续执行几个功能可以看到主要文件也已经生成

继续阅读