我想知道是否有一种方法来检查后端(Laravel)如果请求(例如GET/posts)来自惯性前端或来自其他来源(如Postman API)。
目前看来,如果我想为共享路由创建一个公共API(如post模型的CRUD),我将不得不创建单独的路由,因为控制器返回一个服务器端呈现的Vuejs组件。
是否有这样的方法:
public function index()
{
$this->authorize('viewAny', Post::class);
if(request()->isInertiaRequest()) { //<- check if the request is API or Vuejs Inertia frontend
return inertia('Posts/Index', [
'posts' => PostResource::collection($this->postService->index()),
]);
}
return PostResource::collection($this->postService->index());
}
我觉得编写单独的API和惯性路由会违背DRY,因为返回的数据将是相同的资源。
下面一行代码将检查请求是否来自您的情况下的API
if(!$request->inertia() && $request->expectsJson())