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

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

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

创建新功能

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

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

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文件夹,放入功能函数的代码

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

好了,现在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界面,有如下表单,填写信息:

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

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

ECC加密后的串,密钥串,以及二维码等

这样,基本的前后端交互就完成了。

猜你喜欢

转载自blog.csdn.net/reigns_/article/details/89363147