Laravel PATCH Request无法读取Axios表单数据

Abe*_*out 2 php laravel reactjs axios

我正在尝试将Axios PATCH请求发送到Laravel 5.6 API。我的请求包含一个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
})
Run Code Online (Sandbox Code Playgroud)

Laravel补丁请求

public function update(Request $request, $planId)
{
    $data = $request->all();
    dd($data);
}
Run Code Online (Sandbox Code Playgroud)

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

pha*_*est 6

令人遗憾但确实如此,当从浏览器请求时,Laravel未能正确响应PATCH或PUT请求。

一个快速的解决方案可能是使用a POST并添加_method: PATCH为post参数。

请尝试使用此更新的代码

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
})
Run Code Online (Sandbox Code Playgroud)

可以在axios.patch / axios.put中找到同一问题的另一个示例,在Vue和Laravel中不起作用

  • 非常感谢...在这个问题上花了几个小时之后。 (2认同)