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

标签 angularjs api routes laravel-5 laravel-artisan

我正在尝试在 Laravel 5 中启动一个新项目,但遇到了一些路由问题。我之前使用 Laravel 4 做过类似的事情,但我是 Laravel 5 的新手。

我想做的是创建一个演示应用程序,其中包含 AngularJS 前端、Laravel 作为后端服务器和数据 API。我已经 gulp 将我的前端构建到 laravel/public/app 中,所以我的结构如下所示:

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

我将 Laravel 配置为在 laravel/config/view.php 中查找从 public/app 开始的 View :

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

然后,我配置了路由以加载“/”的 Angular 索引页面以及用于 API 调用的路由组,如下所示:

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

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

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

});

我在开发中使用 artisan 服务器并使用 php artisanserve 运行它 - 这工作得很好。索引页面加载,我的 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中,index方法只有一行:

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

有人看到我缺少什么,或者我的/api 路由不起作用吗? 感谢大家抽出宝贵的时间!

最佳答案

事实证明,解决方案非常简单,而且有两个部分。 首先, Controller 方法(在本例中为 ProjectController@index)必须返回一些内容。其次,当我检查开发者控制台中的“网络”选项卡时,我发现了一个错误 - 500 错误在完整响应中返回了更多信息。

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

包含它
use Response;

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

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

关于angularjs - Laravel 5 API 路由向前端返回 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32830571/

相关文章:

api - 图像背景去除

routes - mikrotik nat 从本地重定向到本地

javascript - Nodejs快速路由: no styling if "/" is added

php - Laravel 路线未定义,但显然是

javascript - Angular/YouTube API v3 : 401 Invalid credentials error on search

javascript - 为什么从 Angular 服务中的对象中删除此元素不起作用?

javascript - 如何限制与我的 Angular ui-select 链接的 10,000 个对象的数组?

php - 在数字前使用 {%2B) 而不是 (+) 有什么区别?

c++ - 检索应用程序提供的所有 Python API 的列表

javascript - 如何测试已定义父指令的指令