既存の Laravel 4 コントローラーとモデルを取得して、「api.myapp.com」にアクセスしたときに json オブジェクトの応答を返す簡単な方法を探しています。
指定したサブドメイン要求で使用できるルーティング フィルターはありますか?
既存の Laravel 4 コントローラーとモデルを取得して、「api.myapp.com」にアクセスしたときに json オブジェクトの応答を返す簡単な方法を探しています。
指定したサブドメイン要求で使用できるルーティング フィルターはありますか?
問題は次の 2 つであることがわかりました。1) サブドメインを正しく解決するために、ローカル ホスト ファイルを更新するのを忘れていました。2) Laravel 4 Route::resource インスタンスは、複数の Route::group() で再利用できません。
異なるサブドメインで同じリソース ルートを参照する唯一の方法は、各 RESTful ルートを手動で指定し、リソースごとに新しいコントローラーを作成することであることがわかりました。Jeffery Way には、これをスピードアップするための優れた崇高なスニペットがあります。ここにスニペット。
コピーされた各コントローラーの前の「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 メソッドで適切な応答を呼び出すことです。
before フィルターを使用して、「api」サブドメインを確認してください。このようなもの
Route::filter('before', function()
{
$server = explode('.', Request::server('HTTP_HOST'));
if ($server[0] === 'api')
{
// Api subdomain request - do JSON
}
else
{
// Route normal
}
}