You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel后端如何判断请求来自Inertia组件还是外部API?

Laravel中判断Inertia请求并复用路由实现CRUD

完全可以实现你想要的逻辑,核心是利用Inertia请求自带的专属请求头来区分来源:

1. 直接通过请求头判断

Inertia发起的所有请求都会携带X-Inertia请求头,值固定为true。你可以直接在控制器里检查这个头,替换你代码里的判断逻辑:

public function index()
{
    $this->authorize('viewAny', Post::class);
    $posts = PostResource::collection($this->postService->index());

    if (request()->header('X-Inertia') === 'true') {
        return inertia('Posts/Index', compact('posts'));
    }

    return $posts;
}

2. 封装成请求宏(更优雅复用)

如果多个控制器都需要这个判断,可以在AppServiceProvider的boot方法里注册一个请求宏,这样就能像你设想的那样用request()->isInertiaRequest()调用:

// app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\Request;

public function boot()
{
    Request::macro('isInertiaRequest', function () {
        return $this->header('X-Inertia') === 'true';
    });
}

之后你的控制器代码就可以和最初设想的完全一致了,完美复用路由和业务逻辑,完全符合DRY原则。

注意事项

  • 这个判断是可靠的,因为X-Inertia头是Inertia官方定义的标识,Postman等工具默认不会携带这个头,除非手动添加。
  • 如果你的API需要额外的响应格式(比如统一的包裹结构),可以在返回资源时单独处理,但核心的业务逻辑依然可以复用。

内容的提问来源于stack exchange,提问作者qwasyx0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 03:05:00