我的项目由四个主要部分组成:
App显示API中的数据
API为app提供数据
仪表板管理数据库数据(Twig,无SPA)
网站显示数据库中的一些数字(只读)
我们是否应该使用Laravel的模块库将系统分成: API、仪表板、公共、Web,还是有更好的想法?最好的方法是什么?
发布于 2017-03-02 00:15:57
拉勒维尔在默认情况下已经为你分拆了。只要查看一下路由目录,就可以看到web路由和api路由有单独的文件,前缀为api,尽管您可以自己更改前缀。
实际上,您需要考虑的部分是仪表板/网站部分,您必须实现授权才能知道谁可以访问什么。
基本上,您只是在构建一个正常的应用程序,然后开始添加不同的控制器来响应API路由,因为应用程序控制器和api控制器不返回相同的内容。应用程序控制器主要返回视图和重定向,而api控制器主要返回JSON格式的数据。您可以将这些控制器分成两个不同的目录,如下所示
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- 公共:一些由web和api共享的助手、服务和中间件
3- 仪表板:身份验证+授权以限制访问。在这里使用一个路由组并应用中间件。
Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'admin']], function(){
//admin routes go in here
});4- 网络:公共数据,只读。不需要授权。只是没有身份验证的基本页面。
发布于 2018-11-12 10:08:09
关于@EddyTheDove的答案,我会构建主要控制器,以便在web和api控制器中进行扩展。无论如何,每个输出都需要相同的数据。您可以在api控制器中转换数据雄辩资源或在web控制器中转换视图。
https://stackoverflow.com/questions/42541878
复制相似问题