Laravel PATCH 请求不读取 Axios 表单数据

Posted

技术标签:

【中文标题】Laravel PATCH 请求不读取 Axios 表单数据【英文标题】:Laravel PATCH Request doesn't read Axios form data 【发布时间】:2019-08-02 15:33:42 【问题描述】:

我正在尝试向 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 请求打印一个空数组 []

【问题讨论】:

您检查过发送到服务器的数据包含哪些内容吗? 是的,我使用 reactjs 和 redux,我在将数据从视图发送到操作后打印数据并在操作中打印它并且它存在但是当它发送到 laravel 时它不会读取它 @AbeerElhout 请检查您的网络选项卡以确保将数据发送到端点 您是否通过网络控制台检查过哪些数据是真正发送的?此外,尝试进一步调试哪些数据到达服务器 - 您可以使用另一个原始 php 脚本来简单地转储该数据 @phaberest 是的,我做了这个检查并且数据存在 【参考方案1】:

很遗憾,但事实是,当从浏览器请求时,Laravel 无法正确响应 PATCH 或 PUT 请求。

一个快速的解决方案可能是使用 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
)

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

【讨论】:

非常感谢......在这个问题上花了几个小时之后。 我的朋友我也去过那里;) 非常感谢……我也为此苦苦挣扎了 4 个小时

以上是关于Laravel PATCH 请求不读取 Axios 表单数据的主要内容,如果未能解决你的问题,请参考以下文章

react封装基于axios的API请求

使用邮递员的 PUT/PATCH 请求在 Laravel 中返​​回状态码 0

axios/laravel/formdata 发布请求为空

axios 向 laravel 发布请求,给出 500 错误

从控制器读取 json 响应到 Axios Catch 部分 - Laravel Vue Axios

在 Laravel 5.5 上使用 axios 发布请求