【问题标题】:Laravel API + Yeoman Angular GeneratorLaravel API + Yeoman 角度生成器
【发布时间】:2015-04-07 22:29:48
【问题描述】:

我有一个我无法解决的问题。我用 Laravel 和 Blade 编写了后端管理部分,并为前端(Angular 应用程序)添加了 API 路由。我正在使用 yeoman 角度生成器,然后我构建前端项目并将“dist”中的所有文件夹移动到 Laravel 的公共文件夹中;并将 index.html 放入 /app/view/ 并将其重命名为 index.php。一切正常,但是当我执行 angular $http 请求时,响应标头显示 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;
        });
  });

【问题讨论】:

    标签: php angularjs api laravel yeoman-generator


    【解决方案1】:

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

    你有这条路线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');
    });
    

    这意味着只有当上述路由都不匹配时,{animal} 才会运行。

    【讨论】:

    • 老兄,你为我节省了大量时间。我不敢相信我没有看到。有效。非常感谢。
    猜你喜欢
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多