我的电流项目包括4个主要部分:
应用显示来自API的数据
API 为应用提供数据
信息中心管理数据库数据(Twig,无SPA)
网站显示数据库中的一些数字(只读)
我们应该只使用Laravel的模块库将系统拆分为:API,Dashboard,Common,Web还是有更好的想法?什么是最好的方式?
答案 0 :(得分:6)
Laravel默认情况下已经为您拆分了。只需查看routes目录,您就可以看到Web路由和api路由的单独文件,前缀为api
,但您可以自己更改前缀。
您必须实际考虑的部分是仪表板/网站部分,您必须实施授权才能知道谁可以访问内容。
基本上,您只是构建一个普通的应用程序,然后您开始添加响应API路由的不同控制器,因为应用程序控制器和api控制器不会返回相同的内容。应用程序控制器主要返回视图和重定向,而api控制器主要返回JSON格式的数据。您可以将这些控制器拆分为2个不同的目录,如
app/Http/controllers/web/
app/Http/controllers/api/
因此,当在工匠中生成控制器时,您会在前面添加目录
php artisan make:controller web/DashboardController
php artisan make:controller api/UserController
等等。
总结一下:
1- API:使用routes/api.php
,控制器返回JSON return response()->json($data);
2- 常见:一些助手,服务&网络和分享共享的中间件API
3- 信息中心:验证+授权以限制访问权限。在此处使用路由组并应用中间件
Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'admin']], function(){
//admin routes go in here
});
4- Web:公共数据,只读。不需要授权。只是没有身份验证的基本页面。
答案 1 :(得分:0)
关于@EddyTheDove的答案,我将构建主要控制器以扩展到Web和api控制器中。无论如何,您需要为每个输出使用相同的数据。您可以在api控制器中转换数据Eloquent Resources或在Web控制器中查看。