我正在开发一个宁静的laravel应用程序,我需要知道在Laravel中实现路由,控制器和方法的最佳实践,以支持restful requests
和HTTP web requests
,我们可以很容易地创建一个资源控制器,然后将下面的行添加到路由文件中Laravel:控制器和方法的Restful laravel应用程序的最佳做法
Route::resource('Photo', 'PhotoController');
然后在PhotoController
,我们只需要添加的代码以下行返回一个json
响应来自所有的照片:
class PhotoController {
public function index()
{
$photos = Photo::all();
return response()->
json(['result' => $photos]);
}
}
我们还需要一个Controller
和method
这是为了响应网络HTTP
请求,并返回一个网页,而不是它显示所有的照片传到网上用户
质疑json
响应: 在哪里放置这个方法和Controller的最好的地方是把它放在同一个Controller中并返回一个视图是一个好习惯?像下面的例子
class PhotoController{
public function getAll(){
$photos = Photo::getAll();
return view('views',['photos'=>$photos]);
}
}
或创建另一个Controller
和处理网络请求,这并在routes
文件,例如添加新rout
:mysite.com\photos\all
的路线文件?
或做我必须记住这另一个Controller
或做我必须决定该请求是否是从网络,如下面的例子同样的方法内:
public function index()
{
$photos = Photo::all();
if (from web){
return view('views',['photos'=>$photos]);
} else {
return response()->
json(['result' => $photos]);
}
}
我也不得不提我以前问过以下问题: Best design practice to implement routes and controllers for a RESTFul Laravel app 但没有得到任何答案。
您可能想检查请求是否是ajax或请求是否需要json响应。你尝试使用'if($ request-> wantsJson()){'? – Skysplit
我认为他们有很多解决方案,这一切都取决于你的项目是什么。我喜欢有2套控制器,中间件,错误处理程序,并把我所有的逻辑放在公共服务类 – Wistar