【发布时间】:2015-07-29 09:47:51
【问题描述】:
我正在使用 Laravel 5.1,并且正在构建一个可以被视为 JSON 或 HTML 的服务。 reddit 等网站已经采用了这种方法。
示例
普通视图:http://www.reddit.com/r/soccer
JSON 视图:http://www.reddit.com/r/soccer.json
如您所见,他们只需将.json 添加到 URL 中,用户就能以 HTML 或 JSON 的形式看到完全相同的内容。
我现在想在 Laravel 中重现相同的内容,但是我遇到了多个问题。
方法 1 - 可选参数
我尝试的第一件事是为我的所有路线添加可选参数
Route::get('/{type?}', 'HomeController@index');
Route::get('pages/{type?}', 'PageController@index');
但是,我在这里面临的问题是,所有路由都被 HomeController 捕获,这意味着 /pages/?type=json 和 /pages?type=json 被重定向到 HomeController。
方法 2 - 使用命名空间的路由分组
接下来我尝试添加带有命名空间的路由分组,以分离后端和前端
Route::get('pages', 'PageController@index');
Route::group(['prefix' => 'json', 'namespace' => 'Backend'], function(){
Route::get('pages', 'PageController@index');
});
但是,这也不起作用。当使用api 作为前缀时,它确实有效,但我想要的是我可以将.json 添加到每个 URL 并以 json 格式获取结果。我如何在 Laravel 中实现这一点?
【问题讨论】:
-
你用的是什么版本的 laravel?
-
嘿,我使用的是 Laravel 5.1 版
标签: php laravel routing laravel-5 laravel-5.1