За последние 24 часа нас посетили 53844 программиста и 1512 роботов. Сейчас ищут 1210 программистов ...

http delete 419

Тема в разделе "Laravel", создана пользователем Taktreba, 24 мар 2020.

  1. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    Учась делать апи на ларавель
    шаги
    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 моего ресурс контроллера

    подскажите пожалуйста в чем опгут быть проблемы, что я упускаю из вида, и как вообще лучше всего делать апи на ларавель
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    А метод то роуту указали? delete

    А вообще 419 это именно csrf, вы его не передаёте видимо
     
    #2 ADSoft, 24 мар 2020
    Последнее редактирование: 24 мар 2020
  3. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    вот все роуты которые добавились с Route::resource('/task', 'Api\TaskController');
    upload_2020-3-24_17-20-55.png

    сам код метода
    PHP:
    1.     public function destroy($id)
    2.     {
    3.         return response('delete OK - ' . $id, 200);
    4. //        if(Task::findOrFail($id)->delete()) { return response('delete OK', 200); } ;
    5.     }
    --- Добавлено ---
    в TaskController@index заходит (при чем без токена), а в delete нет ( что то упускаю из виду
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
  5. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    хорошо, тогда get работает а delete не работает, возвращает 419. я с нее и начинал, что тогда делать?
     
  6. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    да ты хотя бы просто примеры посмотри и взвесь - в чем разница.
    в роуте есть только get и post, для того что бы сработал delete нужно отправить в форме инпут с действием
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    Не очень понял вас, им же привел список поутру, delete там есть

    Для того чтоб роут отработал нужно отправит именно delete запрос с csrf токеном

    В вашем случае пропишите его как get параметр...&csrf-token=ваш токен
     
  8. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    подсказали мне что для АПИ есть специальный роут api.php. В нем у меня все обрабатывается хорошо, и get and delete and other.

    У меня теперь общий вопрос, если у меня задача в тестовом стоит "Создать приложение Task Tracker с управлением задачами через API."
    что в абстракции должно делать мое приложение?
    Например я через АПИ Хэлпер (постмен) передаю параметры (поля для заполнения) для метода store в теле запроса, так и должно быть? если бы я работа в паре с фронт разрабом - что меня должно волновать?
    1. валидация данных на моей стороне
    2. формат ответа на апикол, в формате json и статусы
    3... что еще?
     
  9. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    611
    Симпатии:
    87
    ну так, а я о чем. поэтому обычно в примерах указывается, что в форму перед отправкой нужно добавить инпут с экшном

    HTML:
    1. <input type="hidden" name="_method" value="delete">
     
  10. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    так у меня нет формы, у меня только апи, я терез постмен вызываю все запросы, а там токен не нужен
     
    #10 Taktreba, 25 мар 2020
    Последнее редактирование: 25 мар 2020
  11. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    Давайте с самого начала.
    1. роуты в routes/api.php прописаны?
    2. Покажите полностью его, нет ли там middleware какого?
    3. нет ли в app/Providers/RouteServiceProvider.php прописанного посредника для апи?
     
  12. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Токен (авторизационный) нужен, просто Постмен умеет его подставлять, если правильно настроен.
    --- Добавлено ---
    Я конечно понятия не имею что у тебя за компот на бекенде. Может ему токен CSRF и сессия нужны, я хз.
    --- Добавлено ---
    Проще всего: создавай ресурс-маршруты и соответствующие им контроллеры. Всё по шаблону. Да, json. Один раз согласуй с фронтендером формат и придерживайся его.

    Рекомендую также освоить APIDOC чтобы документировать свои endpoint и чтобы фронтендеру было удобно
     
    Taktreba нравится это.