Laravel 5 API路由返回500前端错误

时间:2015-09-28 19:42:28

标签: angularjs api routing laravel-5 artisan

我试图在Laravel 5中开始一个新项目,而且我遇到了一些路由问题。我之前使用过Laravel 4来做类似的事情,但我是laravel 5的新手。

我要做的是创建一个带有AngularJS前端的演示应用程序,并将Laravel作为后端服务器和数据API。我已经把我的前端构建到laravel / public / app中,所以我的结构看起来像这样:

laravel
 - app/
 - frontend-src/
 - public/
 -- app/
 --- index.php
 --- js/
 --- css/
 --- views/

我将Laravel配置为在laravel / config / view.php中查找以public / app开头的视图:

'paths' => array(__DIR__.'/../public/app'),

然后我配置我的路线以加载' /'的角度索引页面。和我的API调用路由组如下:

Route::get('/', function () {
    return view('index');
});

Route::group(array('prefix' => 'api'), function() {

    Route::resource('projects', 'ProjectController');

});

我通过使用工匠服务器并使用php artisan serve运行它来开发服务 - 这很好用。加载索引页面,我的Angular应用程序可见,主页看起来正确。

但是,当我在主页中向GET / api / projects添加服务调用时,服务器响应500错误

GET http://localhost:8000/api/projects 500 (Internal Server Error)

起初我以为我说错了或路线没有设置,所以我运行命令php atisan route:list - 但路线看起来不错:

+--------+----------+------------------------------+----------------------+------------------------------------------------+------------+
| Domain | Method   | URI                          | Name                 | Action                                         | Middleware |
+--------+----------+------------------------------+----------------------+------------------------------------------------+------------+
|        | GET|HEAD | /                            |                      | Closure                                        |            |
|        | GET|HEAD | api/projects                 | api.projects.index   | App\Http\Controllers\ProjectController@index   |            |
|        | POST     | api/projects                 | api.projects.store   | App\Http\Controllers\ProjectController@store   |            |
|        | GET|HEAD | api/projects/create          | api.projects.create  | App\Http\Controllers\ProjectController@create  |            |
|        | DELETE   | api/projects/{projects}      | api.projects.destroy | App\Http\Controllers\ProjectController@destroy |            |
|        | PATCH    | api/projects/{projects}      |                      | App\Http\Controllers\ProjectController@update  |            |
|        | GET|HEAD | api/projects/{projects}      | api.projects.show    | App\Http\Controllers\ProjectController@show    |            |
|        | PUT      | api/projects/{projects}      | api.projects.update  | App\Http\Controllers\ProjectController@update  |            |
|        | GET|HEAD | api/projects/{projects}/edit | api.projects.edit    | App\Http\Controllers\ProjectController@edit    |            |
+--------+----------+------------------------------+----------------------+------------------------------------------------+------------+

在ProjectController中,索引方法只有一行:

return Response::json(array('success' => true));

有没有人看到我失踪了什么,或者我的/ api路线不会起作用? 谢谢你的时间,全部!

2 个答案:

答案 0 :(得分:2)

事实证明,解决方案很简单,它有两个部分。 首先,一个控制器方法(ProjectController @ index,在这种情况下)必须返回一些东西。其次,当我在开发人员控制台中检查“网络”选项卡时发现错误 - 500错误在完整响应中返回了更多信息。

显然,要在Laravel 5中使用“Response :: json(...)”,您必须通过

包含它
use Response;

或命名该类并编写\Response::json(...)

我通过use语句包含它,并按预期返回API调用。

答案 1 :(得分:0)

您必须设置请求,无论是Get还是Post,如下所示......

Route::get('/', function () {
    return view('index');
});

Route::group(array('prefix' => 'api'), function() {
    Route::resource('projects', 'ProjectController');
    Route::get('projects','ProjectController@projects');
});

现在路由允许您从函数项目返回json代码。 PS:如果这不起作用,请告诉我。