想学Go Web?先来看看如何搭建一个beego项目和实现简单功能吧!

「这是我参与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进行编译。

image-20220109171157615

然后在命令行运行bee.exe即可。

image-20220109171433361

二、新建一个beego项目

新建一个Go Web项目,需要我们使用bee来新建,只需要在命令行执行bee new [name]即可

我们这里新建一个项目时需要注意,这个新建项目的命令需要在GOPATH的src目录之下才能执行成功。

三、安装依赖

image-20220109201843062

然后我们发现有个go.mod文件里面有两个依赖需要安装,我们在终端输入go tidy即可

image-20220109201931143

四、运行项目

然后输入D:\Go\bin\src\github.com\beego\bee\bee run 运行项目。

image-20220109203236002

访问http:// localhost :8080

image-20220109203400505

我们可以发现运行成功!

下面简单搭建实现几个小功能吧!

五、正则路由

我们先来介绍一下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)往页面中写入内容。

我们来看一看能否成功访问。

image-20220109221809920

看来是可以的!

六、使用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路径,我们可以看到:

image.png 如果没看到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的键名。

猜你喜欢

转载自juejin.im/post/7054424169957556254