本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名原文链接~~~

beego笔记(2)之控制器

微信搜索 zze_coding 或扫描 👉 二维码关注我的微信公众号获取更多资源推送:


此系列我仅会记录一些 Beego 的基本使用以及常用语法,而不会对每个知识点详述,尽量做到以注释的形式让有 Web 开发经验的小伙伴一看就懂,也让自己在以后忘了某个语法或知识点的时候看到这里能迅速找回感觉~

标准控制器

package main

import (
	"fmt"
	"github.com/beego/beego/v2/server/web"
)

type Demo1Controller struct {
	web.Controller
}
// 以 Get method 访问 /demo1/
func (c *Demo1Controller) Get() {
	c.Ctx.WriteString(fmt.Sprintf("Get(): %s", c.Ctx.Input.Method()))
}
// 以 Post method 访问 /demo1/
func (c *Demo1Controller) Post() {
	c.Ctx.WriteString(fmt.Sprintf("Post(): %s", c.Ctx.Input.Method()))
}
// 以 Put method 访问 /demo1/
func (c *Demo1Controller) Put() {
	c.Ctx.WriteString(fmt.Sprintf("Put(): %s", c.Ctx.Input.Method()))
}
// 以 Delete method 访问 /demo1/
func (c *Demo1Controller) Delete() {
	c.Ctx.WriteString(fmt.Sprintf("Delete(): %s", c.Ctx.Input.Method()))
}

type Demo2Controller struct {
	web.Controller
}
// 以 Get method 方法访问格式为 /login/username/<username>/ 的 Path
func (c *Demo2Controller) Get() {
	username := c.Ctx.Input.Param(":username")
	c.Ctx.WriteString(fmt.Sprintf("login: %s", username))
	/*
	127.0.0.1:8080/login/username/zze/
	login: zze
	 */
}

func main() {
	// 标准 Restful 控制器,可使用不同 Method 请求 /demo1/ 路径来访问到不同的控制器方法
	web.Router("/demo1/", &Demo1Controller{})
	// Url 中携带参数,在控制器中通过控制器对象的 Ctx 属性取得 context.Context 对象来获取 Url 参数
	web.Router("/demo2/username/?:username/", &Demo2Controller{})
	web.Run()
}

方法映射

package main

import "github.com/beego/beego/v2/server/web"

type Demo3Controller struct {
	web.Controller
}
// 以 Post method 访问 /demo3/
func (c *Demo3Controller) Add() {
	c.Ctx.WriteString("Add")
}
// 以 Delete method 访问 /demo3/
func (c *Demo3Controller) Del() {
	c.Ctx.WriteString("Del")
}
// 以 Patch method 访问 /demo3/
func (c *Demo3Controller) Modify() {
	c.Ctx.WriteString("Modify")
}
// 以 Get/head method 访问 /demo3/
func (c *Demo3Controller) Query() {
	c.Ctx.WriteString("Query")
}

// 方法映射
func main() {
	// 通过 <method1[,method..n]>:<func_name> 的方式将以一个或多个 method 方式的请求映射到控制器中名为 func_name 的函数
	web.Router("/demo3/", &Demo3Controller{}, "get,head:Query;post:Add;delete:Del;put,patch:Modify")
	web.Run()
}

自动注册控制器

package main

import "github.com/beego/beego/v2/server/web"

type Demo4Controller struct {
	web.Controller
}

func (c *Demo4Controller) Add() {
	c.Ctx.WriteString("Add")
}

func (c *Demo4Controller) Del() {
	c.Ctx.WriteString("Del")
}

func (c *Demo4Controller) Query() {
	c.Ctx.WriteString("Query")
}

func (c *Demo4Controller) Pagelist() {
	c.Ctx.WriteString("Pagelist")
}

func main() {
	// 通过 AutoRouter 注册自动路由,此种方式将会以控制器名称去除 Controller 部分为前缀(此处为 demo4),方法名为二级路径注册路由,此处即会注册如下几条路由:
	//     /demo4/add、/demo4/del、/demo4/query、/demo4/pagelist
	// 可以看到所有路径字符均为小写,并且可以接收任意 method 的请求
	web.AutoRouter(&Demo4Controller{})
	web.Run()
}
# Beego  

如果这篇文章对您有帮助,可点击下方链接分享给你的朋友们😋,如果遇到问题欢迎评论、留言~~~😇

评论

公众号:zze_coding

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×