Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在laravel中构建基于自己API的网站_Php_Json_Laravel_Laravel 4 - Fatal编程技术网

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

Php 如何在laravel中构建基于自己API的网站,php,json,laravel,laravel-4,Php,Json,Laravel,Laravel 4,我正在拉维尔建一个小型电视节目图书馆。我想包括一个API以及未来可能的扩展。当我开始的时候,我有两个控制器,它们应该是一个控制器:API控制器和web前端控制器。他们俩的逻辑是一样的。这显然不是好的做法,因为这会导致代码重复 如何使我的应用程序以API为中心?我在考虑使用一个API控制器来处理所有逻辑并返回一个JSON对象,前端使用一个常规控制器,它只接收API控制器返回的JSON对象并将其传递给视图(如果有处理的话)。如果是这样的话,我该如何取回这个物体呢?向我自己的服务器发出请求?如果您正在

我正在拉维尔建一个小型电视节目图书馆。我想包括一个API以及未来可能的扩展。当我开始的时候,我有两个控制器,它们应该是一个控制器:API控制器和web前端控制器。他们俩的逻辑是一样的。这显然不是好的做法,因为这会导致代码重复


如何使我的应用程序以API为中心?我在考虑使用一个API控制器来处理所有逻辑并返回一个JSON对象,前端使用一个常规控制器,它只接收API控制器返回的JSON对象并将其传递给视图(如果有处理的话)。如果是这样的话,我该如何取回这个物体呢?向我自己的服务器发出请求?

如果您正在开发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();
?>

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

/api
和版本(即
/api/v1

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


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

您可以使用存储库获取所需的数据,然后您可以将其传递到
视图
以制作网页,或者只打印JSON,这样就可以防止重复代码

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

检查此视频以了解更多关于Laravel存储库的信息:

在5.3号幼虫中,您可能需要考虑使用LyValb Passport,它提供了一种从前端消耗您自己的API的非常好的方式,而不必太过担心认证

还有一个关于laracasts的视频