控制器
在本章节中,我们将学习控制器是如何工作的,以及如何生成控制器。
什么是控制器#
控制器就是 MVC 中 C 的部分,他负责路由所对应的逻辑实现部分,负责返回正确的响应。
在 Buffalo 中,我们正常称控制器为 actions。
定义一个 action#
Buffalo 的 action 函数都是 buffalo#Handler 函数,
func Home(c buffalo.Context) error {
return c.Render(200, r.HTML("home.html"))
}
在本例中,我们定义了一个叫 Home 的 action,从 home.html 模板渲染内容返回,并且返回的 http 状态为 200。
每个 action 都接受一个 buffalo.Context 作为参数。通过他我们可以获取到本次 request 的上下文信息。看 上下文 章节了解上下文相关内容。
自动生成 action#
Buffalo 提供了一个工具帮我们自动生成 action 模板内容。减少我们重复的冗余的劳动。
查看帮助,看看怎么使用此工具
$ buffalo g action --help
Generates new action(s)
Usage:
buffalo generate action [name] [actionName...] [flags]
Aliases:
action, a, actions
通过 buffalo g action [name] [actionName...]
$ buffalo g action users show index create
--> templates/users/show.html
--> templates/users/index.html
--> templates/users/create.html
--> actions/users.go
--> actions/users_test.go
--> goimports -w .
有时候我们需要指定 http 方法。
$ buffalo g action users message --method POST
也可以通过指定 --skip-template 标识,告诉系统不用生成模板文件。
$ buffalo g action users update --skip-template
销毁 action#
删除已经存在的 action
$ buffalo destroy action users
或者通过别名
$ buffalo d a users