组织 MVC 后端



如果我必须为内部 API 和外部(公共(API 创建不同的方法,我应该如何正确组织控制器。

变种:

  • 不划分控制器:[模型]控制器将具有两个 API 的方法;
  • 为所有外部请求创建一个控制器:PublicApiController
  • 按用途划分每个控制器:[模型]控制器,[模型]公共控制器
  • 除以其他东西,如PublicReadController,PublicWriteController等。

我问它的原因是美学和代码可扩展性以及前景的可读性。

由于您可以在Controllers中创建任意数量的文件夹,因此我在项目中实际做的是:

/Http/Controllers
| - V1
    | - Internal
        | - UsersController
        | - ProductsController
        | - UploadsController
        | - BackupController
    | - External
        | - Auth
            | - PasswordController
            | - ResetController
        | - DashboardController
        | - UsersController
        | - ProductsController

* V1 是可选的。我喜欢它,以便将来我可以更改为 V2 并在需要时更换一些控制器

通过这样做,您可以让路由组加载不同的命名空间/中间件,以便为每组控制器提供正确的身份验证。然后,每个控制器将只专注于要做的几件事,漂亮、整洁且可扩展。

然后,我将我的业务逻辑放在一个文件夹中,app/Services并将我的所有业务逻辑写入其中,因此这会产生瘦控制器和瘦模型。控制器只不过是使用服务、路由请求和响应的地方。

根据经验,我喜欢遵循控制器没有任何自定义方法的模式。因此,您最终会得到许多非常薄的控制器,因此我将分解控制器以仅处理通用的 RESTful 资源方法,如 index update store destroy show 。我不会专注于将模型层与控制器层耦合。

例如:如果我们有一个更新用户个人资料图像的端点而不是UserController@updateImage这种结构,我们/User/ImageController@update因此始终坚持使用通用方法。

最新更新