Учась делать апи на ларавель шаги 1. установил auth 2. установил passport 3. добавил passport to kernel 4. создал контроллер ресурс 5 создал роут ресурс Спойлер Route::resource('/task', 'Api\TaskController'); mysite/task - вызывает индект когда я апи тестере выставляю GET mysite/task, он заходит в index и я получаю респонс а вот если в апи тестере я делаю DELETE mysite/task/1 я получают ответ 419 я подумал что на делет нужен какой то токен, вставил в хедеры X-CSRF-TOKEN который подсмотрел в dd(csrf_token()); и один раз я получил ответ, а после того как логинился перелогиневался и менял токен, не как не могу получить ответ метода DELETE моего ресурс контроллера подскажите пожалуйста в чем опгут быть проблемы, что я упускаю из вида, и как вообще лучше всего делать апи на ларавель
вот все роуты которые добавились с Route::resource('/task', 'Api\TaskController'); Спойлер сам код метода PHP: public function destroy($id) { return response('delete OK - ' . $id, 200); // if(Task::findOrFail($id)->delete()) { return response('delete OK', 200); } ; } --- Добавлено --- в TaskController@index заходит (при чем без токена), а в delete нет ( что то упускаю из виду
хорошо, тогда get работает а delete не работает, возвращает 419. я с нее и начинал, что тогда делать?
да ты хотя бы просто примеры посмотри и взвесь - в чем разница. в роуте есть только get и post, для того что бы сработал delete нужно отправить в форме инпут с действием
Не очень понял вас, им же привел список поутру, delete там есть Для того чтоб роут отработал нужно отправит именно delete запрос с csrf токеном В вашем случае пропишите его как get параметр...&csrf-token=ваш токен
подсказали мне что для АПИ есть специальный роут api.php. В нем у меня все обрабатывается хорошо, и get and delete and other. У меня теперь общий вопрос, если у меня задача в тестовом стоит "Создать приложение Task Tracker с управлением задачами через API." что в абстракции должно делать мое приложение? Например я через АПИ Хэлпер (постмен) передаю параметры (поля для заполнения) для метода store в теле запроса, так и должно быть? если бы я работа в паре с фронт разрабом - что меня должно волновать? 1. валидация данных на моей стороне 2. формат ответа на апикол, в формате json и статусы 3... что еще?
ну так, а я о чем. поэтому обычно в примерах указывается, что в форму перед отправкой нужно добавить инпут с экшном HTML: <input type="hidden" name="_method" value="delete">
Давайте с самого начала. 1. роуты в routes/api.php прописаны? 2. Покажите полностью его, нет ли там middleware какого? 3. нет ли в app/Providers/RouteServiceProvider.php прописанного посредника для апи?
Токен (авторизационный) нужен, просто Постмен умеет его подставлять, если правильно настроен. --- Добавлено --- Я конечно понятия не имею что у тебя за компот на бекенде. Может ему токен CSRF и сессия нужны, я хз. --- Добавлено --- Проще всего: создавай ресурс-маршруты и соответствующие им контроллеры. Всё по шаблону. Да, json. Один раз согласуй с фронтендером формат и придерживайся его. Рекомендую также освоить APIDOC чтобы документировать свои endpoint и чтобы фронтендеру было удобно