2014-09-28 58 views
0

我正在laravel建立一個小型電視節目庫。我想包括一個API以及可能的未來擴展。當我開始時,我有2個控制器,應該是單個控制器:API控制器和Web前端控制器。他們都處理相同的邏輯。這顯然不是很好的做法,因爲這會導致重複的代碼。如何構建一個建立在laravel自己的API上的網站

我該如何讓我的應用程序API爲中心?我正在考慮使用一個API控制器來處理所有的邏輯,並返回一個JSON對象和一個前端的常規控制器,它只需將API控制器返回的JSON對象傳遞給視圖(在處理之後) 。如果這是要走的路,我將如何檢索所述對象? A GET請求我的服務器?

回答

0

如果您正在開發API,則應該在單獨的服務器上卸載加載表單主Web服務器。 如果它位於同一臺服務器上,爲什麼要向它發送請求,因爲您可以開發一個可充當API的類並在您的Web控制器中調用它。

稍後,當您決定使用單獨的服務器時,只需在該類中包裝API控制器即可。

<?php 
$myApi = new MyApi(); 
$myApi->setParmas($paramsArray); 
$myApi->doLogic(); 
echo $myApi->asJson(); 

// or make API class that can handle one liner 
echo MyApi::factory($_GET)->doLogic()->toJson(); 
?> 
0

使您的Laravel應用程序成爲一個API端點,並使用前端框架或某些前端路由和模板庫來處理客戶端。

名稱空間/api和版本的API即/api/v1

這使您可以輕鬆地與許多不同的技術進行開發,而不必重寫你的後端,因爲它只是一個API端點。

然後它可以爲你的web應用,iOS應用程序,Android應用程序等,因爲它是所有處理數據,驗證請求,安全性等

0

您可以使用存儲庫來獲得所需的數據,那麼你可以將它傳遞給View來製作一個網頁,或者只是打印JSON,這樣你可以防止重複的代碼。

Route::get('/latest', function() { 
    return View::make('latest', Movie::latest()); 
} 
Route::get('/api/latest', function() { 
    return json_encode(Movie::latest()); 
} 

看看這個視頻約庫在Laravel更多信息:http://vimeo.com/53029232