У меня есть проблема, которую я не могу понять. Я написал внутренний административный раздел с Laravel и Blade и добавил API-интерфейсы для внешнего интерфейса (The Angular App). Я использую генератор угловых импульсов Йомана, затем создаю внешний интерфейсный проект и перемещаю все папки в «dist» в общую папку Laravel; и index.html в / app / view / и переименуйте его в index.php. Все загружается нормально, но когда я делаю угловой запрос 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);
}
}
Угловой файл 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');
});
Это означает, что только если ни один из вышеперечисленных маршрутов не совпадает, {animal}
побежит.
Других решений пока нет …