【问题标题】:Axios - receiving a 404 error when trying to delete user from databaseAxios - 尝试从数据库中删除用户时收到 404 错误
【发布时间】:2021-03-09 16:45:35
【问题描述】:

所以我目前正在尝试通过单击删除按钮从 mySql 数据库中删除用户。该应用是 Laravel 后端,React 前端。

当我点击删除按钮时,它返回一个 404 错误 'DELETE http://localhost:8000/delete/5 404 (Not Found)'

onDelete 方法:

onDelete(user_id) {

        axios.delete('http://localhost:8000/users/delete/' + user_id)
            .then((response) => {

            })
    }

用户控制器

public function destroy($id)
    {
        $user = User::find($id);
        $user->delete();
    }

代码中的按钮:

<button onClick={this.onDelete.bind(this, Users.id)}>Delete</button>`

网络路由:

Route::delete('users/delete/{id}', 'Api\UserController@destroy');

错误包含正确的 id(错误代码 url 中的最后一个数字是我要删除的用户的正确 id)但我不知道为什么它给了我 404 错误。

更新原来删除路线不在我的路线列表中。 (php工匠路线:列表)

Route::get('userList', 'Api\UserController@index'); 
Route::post('users/store', 'Api\UserController@store'); 
Route::delete('users/delete/{id}', 'Api\UserController@destroy'); 

奇怪,因为 get 和 post 路由在路由列表中,但不是我的 delete 路由。 (上面的代码在我的 web.php 文件中)所有三个方法(索引、存储和销毁)都在我的 UserController 控制器中:


public function index()
    {
        $result = User::all();
        return $result;
    }

public function store(Request $request)
    {
        $user = new User();
        $user->name = $request->user_name;
        $user->email = $request->user_email;
        $user->phone_number = $request->user_phoneNumber;
        $user->account_type = $request->user_accType;
        $user->qualifications = $request->user_qualifications;
        $user->save();
    }

public function destroy($id)
    {
        $user = User::find($id);
        $user->delete();
    }

【问题讨论】:

  • 使用get方法Route::get('users/delete/{id}', 'Api\UserController@destroy');
  • 这个问题也可能有帮助:stackoverflow.com/questions/44113969/…
  • 如果你的 Laravel 处于本地开发模式,它应该给你超过 404。查看你的日志以获取详细信息。您确定该路线在正确的组中吗?上面的 cmets 建议您使用错误的方法,但这会给您“405 Method not Allowed”错误。检查 artisan route:list 以确保它与预期的 URL 存在。
  • @miken32 你知道了,删除方法不在我的路由列表中。我对这一切都很陌生,我该如何把它放在那里?非常感谢
  • @miken32 尝试了所有方法,最终解决方法是使用 'php artisan route:clear' 命令...成为 Laravel 的菜鸟很痛苦,哈哈...感谢您的帮助。

标签: reactjs laravel axios


【解决方案1】:

首先要了解错误码在说什么,根据这个 404 Not Found 客户端错误响应码表示服务器找不到请求的资源,首先尝试以某种方式清理这个

 onDelete(user_id) {
    url = `http://localhost:8000/users/delete/${user_id}`;
    //here make sure url is fine with Id
    axios.delete(url)
        .then((response) => {

        })
    }

在此之后,您必须检查网络调用,无论请求是否对带有 id 的服务器都正常。然后最后仔细检查 api 是否期望删除调用或期望使用 id 进行删除调用的 get 调用,因为许多后端人员使用 get 调用删除记录。如果仍未修复,请给我回电话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多