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

Laravel如何将路由参数改为URL查询参数实现按qr_url查询用户

实现方案

1. 修改路由定义

把原有路由替换为如下代码,取消路径参数定义,匹配你需要的/Home/GetResultByQR路径:

Route::get('/Home/GetResultByQR', [UserController::class, 'inquiry'])->name('users.inquiry');

Laravel的路由助手函数会自动把未匹配到路由路径的参数转为查询字符串,后续生成链接的逻辑不需要大幅修改。

2. 修改控制器方法逻辑

现在query是URL查询参数,需要从请求实例中获取,调整inquiry方法代码如下:

use Illuminate\Http\Request;

public function inquiry(Request $request)
{
    // 校验query参数是否传递,可加长度校验提升查询效率
    $validated = $request->validate([
        'query' => 'required|string|size:170'
    ]);
    
    $user = User::where('qr_url', '=', $validated['query'])->first();

    return view('users/inquiry', compact('user'));
}

3. 前端链接生成验证

原有生成链接的代码不需要修改,直接调用route('users.inquiry', ['query' => $user->qr_url])即可,Laravel会自动生成符合要求的URL格式:http://example.com/Home/GetResultByQR?query=xxx。

可选优化建议

可以给该路由加限流中间件,避免被恶意遍历扫描qr_url:

Route::get('/Home/GetResultByQR', [UserController::class, 'inquiry'])
    ->name('users.inquiry')
    ->middleware('throttle:30,1'); // 限制每分钟最多30次请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:15:05