Route::get 在 Laravel 8 API 中返回空白

Posted

技术标签:

【中文标题】Route::get 在 Laravel 8 API 中返回空白【英文标题】:Route::get returns blank in Laravel 8 API 【发布时间】:2021-01-09 17:32:22 【问题描述】:

我已经安装了最新版本的 laravel,即 Laravel 8。现在,我正在制作一个 API,遇到了这个奇怪的问题。我正在做 API wayback Laravel 5.6,所以这对我来说并不新鲜。

问题:

Route::apiResource('/test', UserController::class);

使用 postman 时 GET 方法返回空白,即使我将其包装在 auth:api 中间件中以检查是否会显示 "message":"Unauthenticated." 但它不会显示。意思是,即使错误也不起作用。但是当我改变我的发帖路线时,它奏效了。

这是我的路线列表:

这是 GET 方法的 POSTMAN 响应:

这是 POST 方法的 POSTMAN 响应:

这是控制器:

public function index()

    return response()->json([
        'success'   => true,
        'data'      => ['test' => 'test'],
        'message'   => 'Success'
    ], 200);

public function store(Request $request)

    return response()->json([
        'success'   => true,
        'data'      => ['test' => 'test'],
        'message'   => 'Success'
    ], 200);

如您所见,它们是相同的,因此邮递员应该为 GET 和 POST 返回相同的值。我已经尝试过 route:clear 但它不起作用。

谢谢。

【问题讨论】:

对不起,我没注意到。我将使用我使用的 apiResource 对其进行更新。 除此之外,我之前没有见过$this->sendResponse() 方法,因为我通常只使用return response()->json(),但它适用于POST 而不是GET 的事实是有点奇怪......我会看看我是否可以重新创建 我正在扩展一个具有 sendResponse 功能的 BaseController。我会更新它以匹配回报。 这和我做的差不多;我的父控制器通常具有 sendSuccess()sendFail() 方法,它们基本上包装了对 response()->json() 的调用,签名略有不同。我假设你是相似的。你用return response()->json(...) 得到同样的结果,对吧? 是的,它是一个包装器。我已经更新了问题。 【参考方案1】:

api/test 上的 GET 请求被 GET 路由 vue 捕获

【讨论】:

你是对的。当我注释掉 vue 时,它起作用了。你有什么解决办法吗?谢谢。 @SeeMore 按顺序声明您的路由,因此 vue 是最后一个,还要检查 routeServiceProvider 以了解 api/web 路由之间的顺序 谢谢。我将检查 routeServiceProvider 以更改 api 和 web 的顺序。

以上是关于Route::get 在 Laravel 8 API 中返回空白的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 Fortify 登录显示 429 太多请求

Laravel 8:POST 请求被视为 GET

Laravel 8速率限制器不适用于路线

Laravel 8 自定义路由在使用资源时返回 404

如何在 Laravel 中使用 get route 插入数据发布

Laravel 8 从下到上的路线顺序