【问题标题】:Route::get returns blank in Laravel 8 APIRoute::get 在 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(...) 得到同样的结果,对吧?
  • 是的,它是一个包装器。我已经更新了问题。

标签: laravel laravel-8


【解决方案1】:

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

【讨论】:

  • 你是对的。当我注释掉 {vue} 时,它起作用了。你有什么解决办法吗?谢谢。
  • @SeeMore 按顺序声明您的路由,因此 {vue} 是最后一个,还要检查 routeServiceProvider 以了解 api/web 路由之间的顺序
  • 谢谢。我将检查 routeServiceProvider 以更改 api 和 web 的顺序。
猜你喜欢
  • 2021-08-12
  • 2021-09-14
  • 2021-04-23
  • 1970-01-01
  • 2021-09-10
  • 2015-08-12
  • 2017-03-06
  • 2022-06-15
  • 2021-11-25
相关资源
最近更新 更多