404 处理程序
在这种情况下,我个人会避免使用中间件。如果你想要一个包罗万象的东西,你实际上是在定义一个自定义的 404 处理程序。所以我会这样处理。
我会打开 app/Exceptions/Handler.php 并在 render 方法中添加一个条件。
类似:
public function render($request, Exception $e)
{
if($e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException)
{
return view('master');
}
return parent::render($request, $e);
}
现在您可以定义 API 路由,它们就可以正常工作,其他任何事情都属于这个 404。
或者,您可以在resources/views/errors/404.blade.php 创建一个页面并让它扩展您的主视图,这将完成同样的事情,尽管我认为会包含一个 404 HTTP 标头。
检查路段
如果你真的想坚持使用中间件,你可以让它检查请求路由段。这样,如果这是一个合法的 API 请求,您就可以跳过全部视图。
假设您的有效 API 端点都以 /api/ 开头,您可以这样做:
public function handle($request, Closure $next)
{
if($request->segment(1) == "api") {
// This is a valid api request! Let it proceed
return $next($request);
}
// Otherwise return the master view
return view('master');
}