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

如何在Laravel中获取Postman激活参数实现用户排序及路由配置

问题解答

完全不需要为姓名、职位、部门等不同排序/筛选维度设置单独路由,使用同一条路由即可实现所有需求,这种实现方式也更符合接口设计规范,后续维护成本更低。

具体实现步骤

1. 定义统一路由

在routes/api.php中只需要定义一条路由即可:

use App\Http\Controllers\UserController;

Route::get('/users/sort', [UserController::class, 'sort']);

2. 控制器参数处理逻辑

Laravel的Request对象会自动获取Postman中所有处于激活状态的查询参数(未勾选的参数不会被Postman发送,Request中自然也不存在),你只需要判断参数是否存在,再对应添加查询逻辑即可:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\User;

class UserController extends Controller
{
    public function sort(Request $request)
    {
        // 第一步:参数合法性校验
        $validated = $request->validate([
            'order' => 'nullable|in:asc,desc', // 排序方向仅支持升序/降序
            'sort_by' => 'nullable|in:name,desig,department', // 允许排序的字段
            'desig' => 'nullable|string', // 职位筛选值
            'department' => 'nullable|string', // 部门筛选值
        ]);

        // 第二步:初始化用户查询构造器
        $userQuery = User::query();

        // 第三步:处理筛选逻辑,仅传了的参数才生效
        if (isset($validated['desig'])) {
            $userQuery->where('designation', $validated['desig']);
        }
        if (isset($validated['department'])) {
            $userQuery->where('department', $validated['department']);
        }

        // 第四步:处理排序逻辑
        if (isset($validated['sort_by'])) {
            // 把请求的排序字段映射到数据库真实字段
            $sortColumn = match($validated['sort_by']) {
                'name' => 'name',
                'desig' => 'designation',
                'department' => 'department',
                default => 'id'
            };
            $sortOrder = $validated['order'] ?? 'asc';
            $userQuery->orderBy($sortColumn, $sortOrder);
        } else {
            // 没有传排序规则时的默认排序
            $userQuery->orderBy('id', 'asc');
        }

        // 返回查询结果
        return response()->json($userQuery->get());
    }
}

请求示例

你可以根据需求自由组合Postman中勾选的参数,不需要修改路由:

  • 按职位升序排列:/users/sort?sort_by=desig&order=asc
  • 筛选职位为lecturer且按姓名降序排列:/users/sort?desig=lecturer&sort_by=name&order=desc
  • 筛选部门为研发部且按部门升序:/users/sort?department=研发部&sort_by=department&order=asc

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:39:03