Mar*_*usP 1 php api laravel laravel-5 laravel-5.2
我有一个像这样定义的路由:
Route::resource('problem', 'ProblemController');
我POST去的那一刻/problem,一个ProblemController@store方法被解雇了.
现在我想要的是返回一个JSON响应,如果它是一个API调用或一个视图(或者可能是重定向),如果我在我的应用程序的"web端".我该如何处理这个问题?
我应该创建单独的控制器?我(在每个方法/控制器中)是否应该检测请求的类型并做出相应的响应?我应该使用中间件吗?路线组?单独申请?
主要目标是在一个包中包含多种应用程序类型(API +版本控制+ Web),但共享业务逻辑,模型和大多数代码(以避免重复).
我正在使用Laravel 5.2.
谢谢!
Request对象提供了一个方法wantJson(),它检查请求的Accept头,如果请求了JSON则返回TRUE.
在您的控制器中,您可以执行以下操作:
if( request()->wantsJson() )
{
return ['foo' => 'bar'];
}
return view('foo.bar');
Run Code Online (Sandbox Code Playgroud)
您可以在此处阅读有关Laravel内容协商的更多信息:http://fideloper.com/laravel-content-negotiation