如何为Web客户端和本机移动应用程序设计laravel 5.1应用程序

Ash*_*ish 9 php design-patterns laravel laravel-5 laravel-5.1

我想为移动应用程序制作适用于Web和api的Laravel 5.1应用程序.我想为api请求返回json并查看Web浏览器.目前我设置了不同的路由和不同的控制器.在这种方法中,我正在重复代码.我不知道设计这种架构的最佳方法是什么.此外,我已经完成了几个类似的线程,建议将angular.js用于Web浏览器.

// web controller
Route::resource('product', 'ProductController');

// api controller 
Route::group(['prefix' => 'api'], function() {
    Route::resource('product', 'APIProductController');
});
Run Code Online (Sandbox Code Playgroud)

Bog*_*tan 1

一种方法是使用内容协商方法。您将传递标头Accept: application/json,然后您的应用程序将返回 json 格式的响应。然而,有些代理服务器不尊重内容协商,那么您的应用程序将会崩溃(您可以在此处阅读更多为什么 Drupal 放弃内容协商)。

另一种可能性是使用一些GET变量来返回请求的格式,例如:/api/product?format=json

您也可以从调用中传递变量/api

Route::get('/api/product', ['as' => 'product', function(){
    return App::make('ProductController')->index('json');
}]);

public function index($format) {
    // Your controller code

    if ($format == 'json') {
        // return JSON
    }

    // return HTML
}
Run Code Online (Sandbox Code Playgroud)

或者你可以直接解析URI并查看它是否以以下开头/API(不推荐)。我的选择是内容协商或/和formatGET 变量。