Laravelで作ったAPIをaxiosから呼ぶとPUTのパラメータが渡されない件
普段PUTを使用するAPIを使うことがあまりないのだけど、Laravelとの組み合わせではまったのでメモ。
リクエストは受け付けてくれるのだけど、Laravel側でPUTされたパラメータを受け取ってくれない。
以下の様に、HTMLフォームのデータでは、PUTやDELETEなどはサポートされていないらしいので、
'_method'というパラメータを作成し、実際のmethodを仕込んでPOSTする。
ソースはこんな感じ。
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'); });