我正在寻找一种简单的方法来获取我现有的 Laravel 4 控制器和模型,并让它们在访问时返回一个 json 对象响应 - “api.myapp.com”。
是否有可用于指定子域请求的路由过滤器?
我正在寻找一种简单的方法来获取我现有的 Laravel 4 控制器和模型,并让它们在访问时返回一个 json 对象响应 - “api.myapp.com”。
是否有可用于指定子域请求的路由过滤器?
我发现问题在于两件事:1)我忘记更新本地主机文件以正确解析子域。2) Laravel 4 Route::resource 实例不能在多个 Route::group() 中复用。
我发现在不同子域上引用相同资源路由的唯一方法是手动指定每个 RESTful 路由并为每个资源创建一个新控制器。Jeffery Way 有一个很好的 sublime 片段来加速这个。片段在这里。
注意每个复制的控制器之前的“Api..”,它在我的控制器目录中命名相同。
Route::group(array('domain' => 'www.myapp.com'), function()
{
Route::resource('projects', 'ProjectsController');
});
Route::group(array('domain' => 'api.myapp.com'), function()
{
/ Resource API
// project API Resource
Route::get('projects', array('as' => 'projects', 'uses' => 'ApiProjectsController@index'));
Route::get('projects/{id}', array('as' => 'project', 'uses' => 'ApiProjectsController@show'));
Route::get('projects/new', array('as' => 'new_project', 'uses' => 'ApiProjectsController@new'));
Route::get('projects/{id}/edit', array('as' => 'edit_project', 'uses' => 'ApiProjectsController@edit'));
Route::post('projects', 'ApiProjectsController@create');
Route::put('projects/{id}', 'ApiProjectsController@update');
Route::delete('projects/{id}', 'ApiProjectsController@destroy');
});
下一步是在 ApiProjectController RESTful 方法中调用适当的响应。
只需使用前置过滤器 - 并检查“api”子域。像这样的东西
Route::filter('before', function()
{
$server = explode('.', Request::server('HTTP_HOST'));
if ($server[0] === 'api')
{
// Api subdomain request - do JSON
}
else
{
// Route normal
}
}