【发布时间】: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(...)得到同样的结果,对吧? -
是的,它是一个包装器。我已经更新了问题。