写点什么

想学 Go Web?先来看看如何搭建一个 beego 项目吧

作者:Regan Yue
  • 2022 年 10 月 07 日
    湖北
  • 本文字数:1651 字

    阅读完需:约 5 分钟

想学 Go Web?先来看看如何搭建一个 beego 项目吧

一、下载安装 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 的键名。

发布于: 刚刚阅读数: 3
用户头像

Regan Yue

关注

还未添加个人签名 2020.08.12 加入

对Go、Python、网络安全、区块链感兴趣. · 华为云云享专家 · 掘金资讯创作者

评论

发布
暂无评论
想学Go Web?先来看看如何搭建一个beego项目吧_Go_Regan Yue_InfoQ写作社区