控制器

[[toc]]

介绍

为了代替在单独路由中以闭包形式定义所有的请求处理逻辑,可以使用控制器来进行整合。控制器被存放在 app/http/controllers 目录中。

定义控制器

下面是一个基础控制器类的例子:

  1. package controllers
  2. import (
  3. "github.com/goravel/framework/contracts/http"
  4. "github.com/goravel/framework/facades"
  5. )
  6. type UserController struct {
  7. //Dependent services
  8. }
  9. func NewUserController() *UserController {
  10. return &UserController{
  11. //Inject services
  12. }
  13. }
  14. func (r *UserController) Show(ctx http.Context) {
  15. ctx.Response().Success().Json(http.Json{
  16. "Hello": "Goravel",
  17. })
  18. }

路由定义:

  1. package routes
  2. import (
  3. "github.com/goravel/framework/facades"
  4. "goravel/app/http/controllers"
  5. )
  6. func Web() {
  7. userController := controllers.NewUserController()
  8. facades.Route.Get("/{id}", userController.Show)
  9. }