「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。
想学Go Web?先来看看如何搭建一个beego项目和实现简单功能吧!
本文收录于我的专栏:《让我们一起Golang》
一、下载安装 bee和 beego
我们先去Github下载bee和beego。
我们可以使用go get来下载:
go get -u github.com/beego/beego
go get -u https://github.com/beego/bee
复制代码
下载完之后,进入bee的目录下,打开当前目录的命令行窗口,使用go build进行编译。
然后在命令行运行bee.exe即可。
二、新建一个beego项目
新建一个Go Web项目,需要我们使用bee来新建,只需要在命令行执行bee new [name]即可
我们这里新建一个项目时需要注意,这个新建项目的命令需要在GOPATH的src目录之下才能执行成功。
三、安装依赖
然后我们发现有个go.mod文件里面有两个依赖需要安装,我们在终端输入go tidy
即可
四、运行项目
然后输入D:\Go\bin\src\github.com\beego\bee\bee run
运行项目。
访问http:// localhost :8080
我们可以发现运行成功!
下面简单搭建实现几个小功能吧!
五、正则路由
我们先来介绍一下beego的正则路由。
在routers里面放置路由文件。
我们在router.go里面写入以下代码:
package routers
import (
"donatechain/controllers"
beego "github.com/beego/beego/v2/server/web"
)
func init() {
beego.Router("/", &controllers.MainController{})
beego.Router("/api/:username([\w]+)", &controllers.Demo1Controller{})
}
复制代码
beego.Router是路由器向 BeeApp 添加了一个模式化的controller处理程序。
第一条路由是根路径时访问controllers中的MainController,注意需要使用controller的指针。
第二条路由是访问类似http://localhost:8080/api/JKJJ,JKJJ便是username参数,我们可以在controller中获取这个参数。
package controllers
import beego "github.com/beego/beego/v2/server/web"
type Demo1Controller struct {
beego.Controller
}
func (this *Demo1Controller) Get() {
username := this.Ctx.Input.Param(":username")
this.Ctx.WriteString("username = " + username)
}
复制代码
使用this.Ctx.Input.Param(":username")即可,Param 通过给定的键返回路由器参数。然后再使用this.Ctx.WriteString("username = " + username)往页面中写入内容。
我们来看一看能否成功访问。
看来是可以的!
六、使用Cooike
我们在Web项目中有时会用到Cooike,现在我们就来了解如何beego项目中使用Cooike,我们先创建一个Cooike的controller:
package controllers
import beego "github.com/beego/beego/v2/server/web"
type CooikeController struct {
beego.Controller
}
func (this *CooikeController) Get() {
this.Ctx.SetCookie("username", "ReganYue")
cookie := this.Ctx.GetCookie("username")
this.Ctx.WriteString("my username is " + cookie)
}
复制代码
然后如果我们想访问的话,必须将他这个控制器添加到路由中,于是我们在Router中加入这样一行:
package routers
import (
"donatechain/controllers"
beego "github.com/beego/beego/v2/server/web"
)
func init() {
beego.Router("/cooike", &controllers.CooikeController{})
}
复制代码
然后运行项目,访问/cooike路径,我们可以看到:
如果没看到ReganYue,可以刷新几次,或者清空Cooikes再次访问。
接下来我们来仔细介绍一下这个设置Cooike和获取Cooike的函数。
func (ctx *Context) SetCookie(name string, value string, others ...interface{}) {
ctx.Output.Cookie(name, value, others...)
}
复制代码
第一个参数是Cooike的名字,第二个参数是Cooike的值。而第三个参数被用于设置Cooike的最大存活时间(max age time), Cooike的设置路径(path), 指定Cooike的域名(domain), secure and httponly.如果Cooike的secure的参数是true,那么这个Cooike就只能通过https传送给服务器,是不可以用http协议发生的。如果这里的Cooike设置为HttpOnly=true,那么就不会让js获取,不能用document.cookie输出Cooike的值。
func (ctx *Context) GetCookie(key string) string {
return ctx.Input.Cookie(key)
}
复制代码
这个是用于获取Cooike的值,只有一个参数,那就是Cooike的键名。