Laravel API + Yeoman Angular 生成器

Laravel API + Yeoman Angular Generator

我有一个无法解决的问题。我用 Laravel 和 Blade 编写了 back-end 管理部分,并为 front-end(Angular 应用程序)添加了 API 路由。我正在使用 yeoman angular 生成器,然后构建 front-end 项目并将 "dist" 中的所有文件夹移动到 Laravel 的 public 文件夹中;和 index.html 到 /app/view/ 并将其重命名为 index.php。所有加载都很好,但是当我执行 angular $http 请求时,响应 header 说 200 Ok 但没有返回数据。我错过了什么?

/* routes.php ------------ ANGULAR.JS API ROUTES --------------- */
Route::group(['prefix'=>'client_api'], function()
{
    Route::get('all-from-species', 'ClientApiController@AllFromSpecies');
    Route::get('{animal}', 'ClientApiController@AnimalData');
    Route::get('events', 'ClientApiController@AllEvents');
    Route::post('subscribe', 'ClientApiController@subscribeToNewsletters');
    Route::get('aboutus', 'ClientApiController@aboutUs');
    Route::get('contactus', 'ClientApiController@contactUs');
});

ClientApiController.php ------------------------------

<?php
class ClientApiController extends \BaseController {

    public function AllFromSpecies()
    {
        //
    }

    public function AnimalData($id)
    {
        //
    }

    public function AllEvents()
    {
        //
    }

    public function subscribeToNewsletters()
    {
        //
    }

    /**
    * @return Response::json
    */
    public function aboutUs()
    {
        $about = AboutUs::find(1);
        // Return Json for Angular use.
        return Response::json($about);
    }
}

Angular JS文件----------------------------

angular.module('animalShelterApp')
  .controller('AboutCtrl', function ($scope, $http) {
        $http.get('/client_api/aboutus')
            .then(function(response) {
                $scope.aboutus = response;
        });
  });

我不知道这是不是唯一的问题,但你的路线肯定有问题...

你有这条路线Route::get('{animal}', 'ClientApiController@AnimalData');

它基本上会捕获每个 client_api/anything 的请求。当您请求 client_api/aboutus.

时,它也会 运行

您可以通过将其放在路由组的末尾来更改它:

Route::group(['prefix'=>'client_api'], function()
{
    Route::get('all-from-species', 'ClientApiController@AllFromSpecies');
    Route::get('events', 'ClientApiController@AllEvents');
    Route::post('subscribe', 'ClientApiController@subscribeToNewsletters');
    Route::get('aboutus', 'ClientApiController@aboutUs');
    Route::get('contactus', 'ClientApiController@contactUs');
    Route::get('{animal}', 'ClientApiController@AnimalData');
});

也就是说只有none以上路由匹配,{animal}才会运行.