李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
GO
正文
06.Beego框架控制器函数
Leefs
2022-07-31 PM
982℃
0条
### 一、介绍 控制器函数是 beego的 RESTful api 的实现方式,在 beego 的设计中,控制器就是一个嵌套了**beego.Controller**的结构体对象。 **示例** ```go // 定义一个新的控制器 type UserController struct { // 嵌套beego基础控制器 beego.Controller } ``` 前面介绍过,struct嵌套,就类似其他高级语言的 **继承** 特性,嵌套了beego.Controller控制器,就拥有了beego.Controller定义的属性和函数。 控制器命名规则约定:**Xxx**Controller **Xxx**就是控制器名字, 这是为了便于阅读,看到Controller结尾的struct就知道是一个控制器。 ### 二、函数 **完成控制器示例** ```go type UserController struct { // 嵌套beego基础控制器 beego.Controller } // 在调用其他控制器函数之前,会优先调用Prepare函数 func (this *UserController) Prepare() { // 这里可以跑一些初始化工作 } // 处理get请求 func (this *UserController) Get() { // 处理逻辑 } // 处理post请求 func (this *UserController) Post() { // 处理逻辑 } ``` **注册路由** ```go // 在这里参数:id是可选的 beego.Router("/user/?:id", &controllers.UserController{}) ``` 根据上面注册的路由规则, 下面的展示对应的http请求和处理函数: - GET /user/2 - 由Get函数处理 - POST /user - 由Post函数处理 **beego.Controller默认可选函数:** | 函数名 | 说明 | | :-------- | :----------------------------------------------------------- | | Prepare() | 这个函数主要是为了用户扩展用的,这个函数会在下面定义的这些 Method 方法之前执行,用户可以重写这个函数实现类似用户验证之类。 | | Get() | 处理get请求, 如果没有实现该函数,默认会返回405错误。 | | Post() | 处理Post请求, 默认会返回405错误。 | | Delete() | 处理Delete请求, 默认会返回405错误。 | | Put() | 处理PUT请求, 默认会返回405错误。 | | Finish() | 执行完Get、Post之类http请求函数之后执行,我们可以在Finish函数处理一些回收工作。 | *提示: 根据业务需要,控制器可以覆盖下表中的函数。* ### 三、如何提前结束请求 如果在Prepare函数处理用户的权限验证,验证不通过,一般都希望结束请求,不要执行后面的函数,beego 提供了 StopRun 函数来结束请求。 **示例** ```go func (this *UserController) Prepare() { // 处理权限验证逻辑 // 验证不通过,返回错误信息,结束请求 this.Data["json"] = map[string]interface{}{"error":"没有权限", "errno":401} this.ServeJSON() this.StopRun() } ``` *提示:调用 StopRun 之后,不会再执行Finish函数,如果有需要可以在调用StopRun之后,手动调用Finish函数。* *附原文链接地址* *http://www.codebaoku.com/beego/beego-controller.html*
标签:
Beego
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/2288.html
上一篇
05.Beego路由配置
下一篇
07.Beego框架请求参数和响应数据
取消回复
评论啦~
提交评论
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
标签云
SpringCloudAlibaba
RSA加解密
Linux
查找
Filter
Elasticsearch
Spark
Sentinel
CentOS
GET和POST
JVM
Java
Docker
Elastisearch
nginx
SpringBoot
Golang基础
FileBeat
Java编程思想
队列
Beego
Flume
排序
Hbase
Spark Streaming
Hive
DataWarehouse
Jquery
JavaScript
Livy
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞