2014-09-28 61 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