せっかなくので、やってみた。

日々のあんなこと、こんなこと、せっかくなのでやってみた

Laravelで作ったAPIをaxiosから呼ぶとPUTのパラメータが渡されない件

普段PUTを使用するAPIを使うことがあまりないのだけど、Laravelとの組み合わせではまったのでメモ。
リクエストは受け付けてくれるのだけど、Laravel側でPUTされたパラメータを受け取ってくれない。
以下の様に、HTMLフォームのデータでは、PUTやDELETEなどはサポートされていないらしいので、 '_method'というパラメータを作成し、実際のmethodを仕込んでPOSTする。

ルーティング 5.5 Laravel

ソースはこんな感じ。

import Axios from 'axios';
const AjaxClient = Axios.create({
  withCredentials: true,
  xsrfHeaderName: 'X-CSRF-Token',
  headers:{
      'X-Requested-With': 'XMLHttpRequest',
      'Content-Type':'application / x-www-form-urlencoded'
  }
});

let url = 'http://....';
let params = {key1: 'val1', key2: 'val2'};
let formData = new FormData();
formData.append('_method', 'PUT');
for (let key in params) {
    formData.append(key, params[key]);
}
AjaxClient.post(url, formData);
    .then((response) => {
        console.log('success');
    }).catch((error) => {
        console.log('error');
    });