如何确定 REST api 中的请求来自何处

2024-04-13

我有一个带有控制器的 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(使用前将#替换为@)

如何确定 REST api 中的请求来自何处 的相关文章