Laravel PATCH Request未读取Axios表单数据

v6ylcynt  于 2022-09-28  发布在  iOS
关注(0)|答案(2)|浏览(190)

我正在尝试向Laravel 5.6 api发送Axios PATCH请求。我的请求包含一个FormData
Laravel的api端点不读取任何发送的数据。

ReactJS代码

let data = new FormData();
data.append("photo", this.state.photo);
// append another data ....

const headers = { 
  'Content-Type': 'multipart/form-data',
  'enctype' : 'multipart/form-data',
  'Authorization' : 'Bearer ' + token 
}

axios({
  method : "PATCH",
  baseURL: this.baseURL,
  url    : url,
  params : params,
  data   : data,
  headers: headers,
}).then(response => {
  return response
})

Laravel补丁请求

public function update(Request $request, $planId)
{
    $data = $request->all();
    dd($data);
}

Laravel请求打印一个空数组[]

dced5bon

dced5bon1#

遗憾的是,当从浏览器请求时,Laravel没有正确响应PATCH或PUT请求。
快速解决方案可能是使用POST并添加_method: PATCH作为后期参数。
请尝试使用此更新代码

let data = new FormData();
data.append("_method", 'PATCH');
data.append("photo", this.state.photo);
// append another data ....

const headers = { 
  'Content-Type': 'multipart/form-data',
  'enctype' : 'multipart/form-data',
  'Authorization' : 'Bearer ' + token 
}

axios({
  method : "POST",
  baseURL: this.baseURL,
  url    : url,
  params : params,
  data   : data,
  headers: headers,
}).then(response => {
  return response
})

同样问题的另一个例子可以在axios.patch / axios.put is not working in Vue and Laravel中找到

r7s23pms

r7s23pms2#

因为HTML标准无法识别HTTP PUT。
您只需要添加POST类型的方法,但对于更新,您可以为PUT/PATCH类型的操作添加带有POST请求的小标志。

axios.post(url, {      // <== use axios.post
 data: data,
 _method: 'patch'      // <== add this field
})

相关问题