李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
GO
正文
06.Beego框架控制器函数
Leefs
2022-07-31 PM
1608℃
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
NLP
4
标签云
Scala
数学
MyBatis
ClickHouse
Sentinel
MySQL
数据结构
二叉树
Spark
Golang基础
ajax
MyBatis-Plus
前端
持有对象
Azkaban
数据结构和算法
Yarn
Flink
LeetCode刷题
序列化和反序列化
锁
Hadoop
Git
Spark Core
Typora
SQL练习题
Elasticsearch
Flume
DataWarehouse
Filter
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭