概要
以下のようにaxiosを使ってPOSTしようとすると、GETメソッドが走って404エラーが出てしまいました。
axios({
method: image.id ? 'PUT' : 'POST',
url: `/hoge/${image.id}`
})
原因
どうやらURLの末尾に/
(スラッシュ)が付いていると、POSTしようとしてもGETメソッドが走ってしまう不具合があるようです。
【追記: 2019年8月16日】
不具合ではなくスラッシュがないURLにリダイレクトしようとしているだけでした。コメントでのご指摘ありがとうございました。
今回の例だと、POSTメソッドのときはimage.idがnullなので、URLが/hoge/
となっていたんですね。
解決策
じゃあ末尾スラッシュをなくせばええやん!ということでコードをサクッと直し解決しました。
let url = '/hoge'
if (model.id) url += `/${image.id}`
axios({
method: image.id ? 'PUT' : 'POST',
url: url
})