Go Web——Beego之controller控制器函数介绍

本文介绍了Beego框架中的Controller控制器,包括如何通过匿名组合实现,控制器方法如GET、POST等的处理,子类扩展以实现RESTful结构,以及如何在Prepare阶段进行用户验证并提前终止运行。同时,文章还探讨了如何自定义业务逻辑方法和使用Finish方法进行资源清理。
摘要由CSDN通过智能技术生成


控制器介绍

基于 beego 的 Controller 设计,只需要匿名组合 beego.Controller 就可以了,如下所示:

package your_package

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

type xxxController struct {
   
        web.Controller
}

控制器方法

web.Controller 实现了接口 web.ControllerInterfaceweb.ControllerInterface 定义了如下函数:

  • Init(ctx *context.Context, controllerName, actionName string, app interface{})

    这个函数主要初始化了 Context、相应的 Controller 名称,模板名,初始化模板参数的容器 Data,app 即为当前执行的 Controller 的 reflecttype,这个 app 可以用来执行子类的方法。

  • Prepare()

    这个函数主要是为了用户扩展用的,这个函数会在下面定义的这些 Method 方法之前执行,用户可以重写这个函数实现类似用户验证之类。

  • Get()

    如果用户请求的 HTTP Method 是 GET,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Get 请求。

  • Post()

    如果用户请求的 HTTP Method 是 POST,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Post 请求。

  • Delete()

    如果用户请求的 HTTP Method 是 DELETE,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Delete 请求。

  • Put()

    如果用户请求的 HTTP Method 是 PUT,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Put 请求.

  • Head()

    如果用户请求的 HTTP Method 是 HEAD,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Head 请求。

  • Patch()

    如果用户请求的 HTTP Method 是 PATCH,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Patch 请求.

  • Options()

    如果用户请求的HTTP Method是OPTIONS,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Options 请求。

  • Finish()

    这个函数是在执行完相应的 HTTP Method 方法之后执行的,默认是空,用户可以在子 struct 中重写这个函数,执行例如数据库关闭,清理数据之类的工作。

  • Trace() error

    如果用户请求的 HTTP Method 是 Trace,那么就执行该函数,默认是 405,用户继承的子 struct 中可以实现了该方法以处理 Head 请求。

  • Render() error

    这个函数主要用来实现渲染模板,如果 beego.AutoRender 为 true 的情况下才会执行。

  • Mapping(method string, fn func())

    注册一个方法。一般而言, method 是合法的 HTTP 方法名。当然,用户注册自己特定的业务逻辑方法,而后手动调用。

  • HandlerFunc(fnname string) bool

    在前面 Mapping 方法里面注册的方法,可以通过该方法来使用。只会返回调用是否成功的信息——一般而言,只有方法不存在才会返回 false

  • RenderBytes() ([]byte, error)

    将模板渲染成字节数组。需要注意的是,该方法并未检测EnableRender设置。并且,和Render方法相比,它并未将结果输出到Response

  • RenderString() (string, error)

    类似于RenderBytes方法。只是将结果转化为了string

  • Redirect(url string, code int)

    重定向。url是目的地址。

  • SetData(data interface{})

    data存储在控制的数据中。一般而言,你不会考虑用到这个方法。

  • Abort(code string)

    中断当前方法的执行,直接返回该状态码,类似于CustomAbort。参考errors

  • CustomAbort(status int, body string)

    中断方法执行,直接返回该状态码和信息。参考errors

  • StopRun()

    直接触发panic

  • ServeXXX(encoding …bool) error

    返回特性类型的响应。目前我们支持 JSON,JSONP,XML,YAML。参考输出格式

  • ServeFormatted(encoding …bool) error

    返回响应。其格式由客户端的Accept选项指定。参考输出格式

  • Input() (url.Values, error)

    返回传入的参数。

  • ParseForm(obj interface{}) error

    将表单反序列化到 obj 对象中。

  • GetXXX(key string, def…) XXX, err

    从传入参数中,读取某个值。如果传入了默

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值