2016-07-08 4 views
2

を発射されますAPI(ajax)の1つ:Laravelルートは時々(すべてのリクエストがangularJSを含んだHTMLを含んでいる家にリダイレクトします)私はLaravel5で、この「一般的な」ルートを持っており、それはAngularJSのためだ別の1

Route::group([ 'prefix' => 'api' ], function() { 

    Route::resource('user', 'UserController'); 

}); 

最初に「API」があり、「角度」の後ろにあります。問題は、よく私がページを呼び出すときです。api/SOMETHINGは実際のもの(リソースの1つ、JSON)ではなくhtml応答で2番目のルート(AngularJS)を起動しているので、この小さな "ハック":

ここで問題は95%で解決されますが、最初の負荷でのみ発生することがよくあります。

ミドルウェア/前?

+0

あなたが 'domain/admin/{path?}'を持っていて、次に 'domain/admin/login'を持っているので、経路について気づく必要があるのは、ドメイン/ admin/loginあなたのブラウザでは、最初のルートは常にそれをキャッチし、必要なルートに到達しません?だから、 'php artisan route:list'を実行して、あなたのルートと出力を見て、これに影響するかどうかを確認してください。 –

+0

問題は、/ api/JSON以外の何かに行き、他の5%の経路{path?}が呼び出されます。奇妙な。 – Grork

+0

あなたはあなたがそれを持っているように完全なルートファイルを投稿することができます/それを望み、また可能ならばphp artisanルートを実行してください:listも同様に、jusはそれのように分割するのではなく、 –

答えて

0

あなたの問題を正しく理解していると、Laravelがルートグループに入ると、そのルートグループに「固着している」と仮定しているように思えます。ただし、グループ内でルートが一致していない場合、Laravelはキャッチオール{path?}ルートまで登録されたルートのリストを「続行」します。

あなたのapiルートグループでcatchallルートを作ってもいいですか?

Route::group(['prefix' => 'api'], function() { 

    // API routes go here here 

    Route::get('{path}', function() { 
     // I believe this is the right way to make a JSON response in Laravel 5 
     return response()->json(['error' => 'endpoint not found']); 
    })->where('path', '.*'); 

}); 
関連する問題