2015-05-27 1 views
0

меня Laravel 5 ресурсов по маршруту:Laravel 5 RESTful маршрут ресурс не работает

Route::group(['middleware' => 'auth'], function() { 

    Route::resource('api/room', 'RoomsController'); 

    // ... 
}); 

RoomsController генерируемый php artisan make:controller команды.

<?php namespace App\Http\Controllers; 
use Auth; 
use App\Room; 
use App\RoomUsers; 
use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use Illuminate\Http\Request; 

class RoomsController extends Controller { 
    // ... 
} 

index маршрут работает. Когда я GETapi/room, он возвращает ожидаемый результат.
Существует [email protected] метод:

public function index() { 
    $user = Auth::user(); 
    $currentUserRooms = RoomUsers::where('user_id', '=', $user->id)->get(); 
    return response($currentUserRooms); 
} 

Проблема:
Когда я пытаюсь POST к тому же URI (/api/room), я получаю 500 Внутренняя ошибка сервера.

Существует метод [email protected] (который следует называть при отправке запроса POST).

public function store() { 
    return response('is Working') // But isn't working 
} 

Я установил эти параметры в файле php.ini, но до сих пор не вижу информацию об ошибке. Он показывает только «500 Внутренняя ошибка сервера»

error_reporting = E_ALL 
display_errors = On 
display_startup_errors = On 

Я включил режим отладки Laravel 5.

+0

Какая конкретная ошибка вы получаете при отправке на этот маршрут? –

+0

«500 Внутренняя ошибка сервера» Я включил «error_reporting» и «display_error», но больше информации об ошибке не отображается. – Ifch0o1

+0

Установлен ли параметр 'app.debug' в значение true? Изменить: просто увидела последнюю строку.Ну, вы не можете видеть только ошибку 500, либо ваши журналы сервера, либо журналы приложений * должны * указать точную ошибку, вы должны ее найти. –

ответ

0

Проблема была вызвана защита CSRF Laravel в.

Я использовал PostMan для отправки запросов. Он принимает GET запросов, но не POST или PUT.

Я использовал исправление от this page отключить CSRF к этим маршрутам:

// app/Http/Middleware/VerifyCsrfToken.php 
// ... 
class VerifyCsrfToken extends BaseVerifier { 

    private $openRoutes = ['api/room', 'api/message']; 

    public function handle($request, Closure $next) { 
     foreach ($this->openRoutes as $route) { 
      if ($request->is($route)) { 
       return $next($request); 
      } 
     } 

     return parent::handle($request, $next); 
    } 
} 

О сообщающей об ошибке:
Вчера я включил все ошибки вариантов отчетов и перезапущен во много раз apache2 обслуживания. Но описание ошибки или трассировка стека не показывалось в PostMan.

Сегодня я просыпаюсь и тестировал его. Это просто сработало. Теперь у меня есть сообщение об ошибке laravel с трассировкой стека. Я не выключил или не перезапустил машину. (Lubuntu 14.04 32bit).
Я понятия не имею, почему это произошло вчера. Возможно, это была какая-то глупая ошибка.

+0

Вместо отключения CSRF вы должны добавить токен в заголовки POST. Как вы публикуете данные? Javascript? –

2

Я пробовал код. и это сработало. Убедитесь, что вы зарегистрированы. RoomsController

output

+1

Спасибо за ваш ответ. Это было вызвано защитой CSRF. – Ifch0o1

 Смежные вопросы

  • Нет связанных вопросов^_^