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

beego笔记(1)之静态路由和正则路由

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


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

导包

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

静态路由

// 静态路由,多种 Method 支持
func main() {
	// 支持方法:
	// 		Delete
	//		Put
	//		Options
	//		Head
	//		Patch
	// 处理 Get 请求
	web.Get("/", func(ctx *context.Context) {
		name := ctx.Input.Query("name")
		ctx.WriteString(fmt.Sprintf("[Method: %s]你输入的名字:%s", ctx.Input.Method(), name))
		/*
			GET /?name=zze HTTP/1.1
			Content-Type: application/x-www-form-urlencoded; charset=utf-8
			Host: 127.0.0.1:8080
			Connection: close
			User-Agent: Paw/3.2.2 (Macintosh; OS X/11.4.0) GCDHTTPRequest

			[Method: GET]你输入的名字:zze
		*/
	})
	// 处理 Post 请求
	web.Post("/", func(ctx *context.Context) {
		// Query 不仅能获取 Url 参数,还能获取 Post 请求时的 Body 中的参数
		name1 := ctx.Input.Query("name1")
		name2 := ctx.Input.Query("name2")
		ctx.WriteString(fmt.Sprintf("[Method: %s]你输入的名字:queryname[%s], bodyname[%s]", ctx.Input.Method(), name1, name2))
		/*
			POST /?name1=zze1 HTTP/1.1
			Content-Type: application/x-www-form-urlencoded; charset=utf-8
			Host: 127.0.0.1:8080
			Connection: close
			User-Agent: Paw/3.2.2 (Macintosh; OS X/11.4.0) GCDHTTPRequest
			Content-Length: 10

			name2=zze2

			[Method: POST]你输入的名字:queryname[zze1], bodyname[zze2]
		*/
	})
	// Any 处理任何方法的请求
	web.Any("/Any", func(ctx *context.Context) {

		ctx.WriteString(ctx.Input.Method())
		/*
			POST /Any/ HTTP/1.1
			Content-Type: application/x-www-form-urlencoded; charset=utf-8
			Host: 127.0.0.1:8080
			Connection: close
			User-Agent: Paw/3.2.2 (Macintosh; OS X/11.4.0) GCDHTTPRequest
			Content-Length: 0

			POST

			PATCH /Any/ HTTP/1.1
			Content-Type: application/x-www-form-urlencoded; charset=utf-8
			Host: 127.0.0.1:8080
			Connection: close
			User-Agent: Paw/3.2.2 (Macintosh; OS X/11.4.0) GCDHTTPRequest
			Content-Length: 0

			PATCH
		*/
	})

	web.Run()
}

正则路由

// 正则路由
func main() {
	// 匹配数字格式 (\d+) 的路由,并将匹配的值存放到 :id 参数
	web.Get("/user/:id(\\d+)/", func(ctx *context.Context) {
		id := ctx.Input.Param(":id")
		ctx.WriteString(fmt.Sprintf("id: %s", id))
		/*
			127.0.0.1:8080/user/1/
			id: 1
		*/
	})
	// 匹配 \b\w+\b
	web.Get("/user/:name(\\b\\w+\\b)/", func(ctx *context.Context) {
		name := ctx.Input.Param(":name")
		ctx.WriteString(fmt.Sprintf("name: %s", name))
		/*
			127.0.0.1:8080/user/zze/
			name: zze
		*/
	})
	// 匹配任意内容
	web.Get("/:content/", func(ctx *context.Context) {
		content := ctx.Input.Param(":content")
		ctx.WriteString(fmt.Sprintf("content: %s", content))
		/*
			127.0.0.1:8080/user-zze/
			content: user-zze
		*/
	})
	// 匹配文件
	web.Get("/file/*", func(ctx *context.Context) {
		content := ctx.Input.Param(":splat")
		ctx.WriteString(fmt.Sprintf("filename: %s", content))
		/*
			127.0.0.1:8080/file/xxx.txt
			filename: xxx.txt
		*/
	})
	// 匹配文件路径和后缀
	web.Get("/files/*.*", func(ctx *context.Context) {
		path := ctx.Input.Param(":path")
		ext := ctx.Input.Param(":ext")
		ctx.WriteString(fmt.Sprintf("path: %s, ext: %s", path, ext))
	})
	/*
		127.0.0.1:8080/files/xxx.txt
		path: xxx, ext: txt

		127.0.0.1:8080/files/xxx/xxx.txt
		path: xxx/xxx, ext: txt
	*/
	web.Run()
}
# Beego  

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

评论

公众号:zze_coding

Your browser is out-of-date!

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

×