如何在laravel中构建基于自己的API构建的网站

时间:2014-09-28 22:34:49

标签: php json laravel laravel-4

我正在laravel建立一个小型电视节目库。我想包括一个API以及将来可能的扩展。当我开始时,我有两个控制器应该是一个单一的控制器:API控制器和Web前端控制器。他们都处理相同的逻辑。这显然不是很好的做法,因为这会导致重复的代码。

我如何以应用程序API为中心?我正在考虑使用一个API控制器来处理所有逻辑并返回一个JSON对象和一个前端的常规控制器,它只接受API控制器返回的JSON对象并将其传递给视图(如果有的话,处理之后) 。如果这样的话,我将如何检索所述对象?对我自己的服务器发出GET请求?

4 个答案:

答案 0 :(得分: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();
?>

答案 1 :(得分:0)

使您的Laravel应用程序成为API端点,并使用前端框架或一些前端路由和模板库来处理客户端。

使用/api和版本/api/v1

命名空间

这使您可以轻松地使用许多不同的技术进行开发,而不必重写后端,因为它只是一个API端点。

然后它可以为您的webapp,iOS应用程序,Android应用程序等提供服务,因为它所做的只是处理数据,验证,请求,安全性等。

答案 2 :(得分:0)

您可以使用存储库来获取所需的数据,然后您可以将其传递给View以创建网页,或者仅为API打印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

答案 3 :(得分:0)

在larval 5.3中,您可能需要考虑使用幼虫护照,它提供了一种非常好的方式来从前端使用您自己的api,而无需过多担心身份验证https://laravel.com/docs/5.3/passport#consuming-your-api-with-javascript

在laracasts https://laracasts.com/series/whats-new-in-laravel-5-3/episodes/13

上还有一个很好的视频