Golang入门教程(十一)beego 框架之RESTful Controller 路由
官方文档:https://beego.me/docs/mvc/controller/router.md
什么是路由设置呢?前面介绍的 MVC 结构执行时,介绍过 beego 存在三种方式的路由:固定路由、正则路由、自动路由,接下来详细的讲解如何使用这三种路由。
在介绍这三种 beego 的路由实现之前先介绍 RESTful,我们知道 RESTful 是一种目前 API 开发中广泛采用的形式,beego 默认就是支持这样的请求方法,也就是用户 Get 请求就执行 Get 方法,Post 请求就执行 Post 方法。因此默认的路由是这样 RESTful 的请求方式。
这里写两个控制器base.go 和mian.go
base.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package controllers import ( "github.com/astaxie/beego" ) type BaseController struct { beego.Controller } func (this *BaseController) Get() { this.Data[ "Website" ] = "beego.me" this.Data[ "Email" ] = "astaxie@gmail.com" this.TplName = "main/index.html" } func (this *BaseController) Post() { this.Ctx.WriteString( "This is Post request this" ) // echo } |
main.go
1 2 3 4 5 | package controllers type MainController struct { BaseController } |
上面的代码显示首先我们声明了一个控制器 BaseController
,这个控制器里面内嵌了 beego.Controller
,这就是 Go 的嵌入方式,也就是 BaseController
自动拥有了所有 beego.Controller
的方法。同时控制器 MainController
,里面内嵌了 BaseController
,这也就是 MainController
自动拥有了所有 BaseController
的方法(新增的Get() 和Post() 方法)
配置路由 router.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package routers import ( "webcodec/controllers" "github.com/astaxie/beego" ) func init() { // GET 请求 beego.Router( "/" , &controllers.MainController{}, "get:Get" ) // POST 请求 http: //127 .0.0.1:8080 /api/list beego.Router( "/api/list" ,&controllers.MainController{}, "post:Post" ) } |
说明:使用GET 请求方式请求Get() 方法,同理使用POST 请求方式请求Post() 方法。如果使用Get请求方式去请求Post()方法,则会提示(匹配不上):
Web页面请求结果
使用PostMan 模拟Post请求
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构