You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+Laravel项目中Axios调用Laravel资源控制器DELETE接口报405错误

排查Laravel + Axios DELETE请求405错误的关键点

首先,你的问题核心在于没有正确匹配Laravel Resource路由的destroy端点,加上Axios请求的参数传递方式有误,导致请求无法被正确路由到destroy方法。下面分几个步骤逐一排查:

1. 先确认Resource路由的正确URL结构

Laravel的Route::resource('items', 'ItemController')生成的destroy路由规则是:

DELETE /items/{item}

也就是说,必须在URL里带上要删除的条目ID,而你之前的请求URL是/items(不带ID),这会导致Laravel找不到对应的DELETE路由,直接返回405 Method Not Allowed。

2. 修正Axios DELETE请求的标准写法

Axios的delete方法第二个参数是配置对象,不是请求体数据。传递ID最直接的方式是拼接在URL里:

export function deleteItem(itemId) {
    let url = `${BASE_URL}/items/${itemId}`;
    return axios.delete(url)
        .then(response => response);
}

如果需要传递额外参数(比如自定义令牌),可以放在params配置项中:

export function deleteItem(itemId) {
    let url = `${BASE_URL}/items/${itemId}`;
    return axios.delete(url, {
        params: {
            // 这里放额外需要传递的参数
        }
    }).then(response => response);
}

3. 关于_method参数的正确使用姿势

如果你因为特殊场景需要用POST模拟DELETE请求(比如兼容旧环境),同样要把ID放在URL里,而不是请求体中:

export function deleteItem(itemId) {
    let url = `${BASE_URL}/items/${itemId}`;
    let payload = {
        '_method': 'DELETE',
        '_token': document.querySelector('meta[name="csrf-token"]').content // 别漏了CSRF令牌
    };
    return axios.post(url, payload)
        .then(response => response);
}

这里的关键是URL必须是/items/{id},Laravel才能识别要匹配destroy方法,再通过_method参数覆盖请求方法。

4. 额外的验证检查点

  • 优化Controller的destroy方法,建议用路由模型绑定更安全(避免find($id)可能返回null的情况):
public function destroy(Item $item) {
    $item->delete();
    return response()->json('Successfully Deleted');
}
  • 打开浏览器开发者工具的Network面板,查看实际发送的请求URL、请求方法、参数是否符合预期,这是快速定位问题的利器。
  • 确认CSRF令牌是否正确传递:Laravel要求非GET请求必须携带CSRF令牌,Axios默认会读取XSRF-TOKENcookie自动添加到请求头,但如果有异常,可以手动全局配置:
axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').content;

内容的提问来源于stack exchange,提问作者Jithesh Kt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:04:25