Laravel路由如何捕获/api/help/后包含查询参数的全部内容
实现方案
原因说明
Laravel 路由在匹配参数时,只会解析 URI 的路径部分,查询参数会被单独拆分到请求对象的查询参数集合中,不会被包含到路由参数$userInput里,所以你现在只能拿到路径段内容。
方案1:控制器内拼接(推荐,无需修改路由)
直接用现有路由参数+请求查询字符串拼接即可,代码如下:
public function __invoke(Request $request, string $userInput) { // 拼接路径和查询参数 $targetContent = $userInput; if ($queryStr = $request->getQueryString()) { $targetContent .= '?' . $queryStr; } // 此时 $targetContent 就是 /api/help/ 之后的完整内容,包含查询参数 dd($targetContent); }
方案2:直接从完整URI截取
如果不想依赖路由参数,也可以直接截取完整请求URI得到目标内容:
public function __invoke(Request $request) { // 拿到完整请求路径+查询参数 $fullUri = $request->getUri(); // 切掉前缀部分,前缀根据你的实际路由前缀调整 $prefix = config('app.url') . '/api/help/'; $targetContent = substr($fullUri, strlen($prefix)); dd($targetContent); }
内容的提问来源于stack exchange,提问作者James Stewart
相关产品推荐
相关产品推荐

