我有一个带有控制器的 RESTful API,当我的 Android 应用程序点击它时,它应该返回一个 JSON 响应,当它被 Web 浏览器点击时,它应该返回一个“视图”。我什至不确定我是否以正确的方式处理这个问题。我正在使用 Laravel,这就是我的控制器的样子
class TablesController extends BaseController {
public function index()
{
$tables = Table::all();
return Response::json($tables);
}
}
我需要这样的东西
class TablesController extends BaseController {
public function index()
{
$tables = Table::all();
if(beingCalledFromWebBrowser){
return View::make('table.index')->with('tables', $tables);
}else{ //Android
return Response::json($tables);
}
}
看看大家的反应有何不同?
注意::这是给未来观众的
我发现使用前缀很方便api
用于 API 调用。在路由文件中使用
Route::group('prefix'=>'api',function(){
//handle requests by assigning controller methods here for example
Route::get('posts', 'Api\Post\PostController@index');
}
在上述方法中,我将 api 调用和 Web 用户的控制器分开。但如果你想使用相同的控制器那么Laravel Request
有一个方便的方法。您可以在控制器中识别前缀。
public function index(Request $request)
{
if( $request->is('api/*')){
//write your logic for api call
$user = $this->getApiUser();
}else{
//write your logic for web call
$user = $this->getWebUser();
}
}
The is
方法允许您验证传入请求 URI 是否与给定模式匹配。您可以使用*
使用此方法时,字符作为通配符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)