2017-04-13 49 views
0

在我web.php文件,我有一個看起來像這樣的路線:區分來自網絡路線和API路線的呼叫?

Route::get('/', '[email protected]'); 

而且在我api.php文件,我有一個看起來像這樣的路線:

Route::get('feeds', '[email protected]'); 

注意到他們兩個呼叫同樣的方法,getFeed()

有沒有一種方法來區分來自web路由的調用是否來自控制器方法中的API路由?我需要能夠返回兩個不同的響應,一個用於web路由,另一個用於API路由。

這裏是HomeController.php類:

class HomeController extends Controller 
{ 
    public function getFeed() { 
     $user = Auth::user(); 

     // How to check if call is from web route or API route? 
     // Need to return two different responses for each scenario. 
    } 
} 

感謝。

+0

您可以使用'$ request-> url();'獲取請求URL並根據請求URL在同一個函數中可以有不同的處理... –

回答

0

替換此行
Route :: get('feeds','HomeController @ getFeed'); 與 Route :: get('api/feeds','HomeController @ getFeed');

表示在所有api路由中添加api前綴。

它將幫助您確定哪些路由來自api,哪些不是。

檢查您可以使用下面的代碼

if (Request::is('api*')) { 
    echo "request from api route"; 
    exit(); 
}else{ 
    echo "request from web"; 
    exit(); 
} 
0

在你的鞋,我會在3個控制器來處理請求和類似尼拉吉提出的,獨立的航線與/ API/

前綴的API路線
class HomeController extends Controller 
{ 
    public function getFeed(entrypoint) { 
    $user = Auth::user(); 
    // do the common magic here ... 
    } 
} 


class WebHomeController extends HomeController 
{ 
    public function getFeed() { 
     feed = this.getFeed(); 
     // do the crazy web magic here ... 
    } 
} 

class APIHomeController extends HomeController 
{ 
    public function getFeed() { 
     feed = this.getFeed(); 
     // do the crazy api magic here ... 
    } 
} 

Route::get('feeds', '[email protected]'); 
Route::get('api/feeds', '[email protected]');