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}
才会运行.
我有一个无法解决的问题。我用 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}
才会运行.