如何在Laravel中创建支持Postman键值参数的GET API
Laravel GET API 改为查询参数实现方案
1. 修改路由配置
把原来带可选路径参数的路由,改成固定路径的GET路由,无需在路径中定义参数:
// api.php Route::get('outlay', [GetValuesController::class, 'getOutlays']);
2. 调整控制器逻辑
将原来的路径参数获取方式,改为从请求查询参数中获取,同时优化查询逻辑减少重复代码:
use Illuminate\Http\Request; use App\Models\Outlay; use App\Http\Resources\OutlayResource; use App\Enums\Status; function getOutlays(Request $request) { // 基础查询:筛选已确认状态并按更新时间排序 $query = Outlay::where('status', Status::CONFIRMED_BY_EMPLOYEE) ->orderBy('updated_at', 'asc'); // 获取查询参数:startdate 和 enddate $startdate = $request->query('startdate'); $enddate = $request->query('enddate'); // 如果存在日期参数,添加区间筛选 if ($startdate && $enddate) { $query->whereBetween('updated_at', [$startdate, $enddate]); } // 返回资源集合 return response()->json([ OutlayResource::collection($query->get()) ], 200); }
3. Postman 调用方式
现在可以通过固定路径,以键值对形式传入查询参数:
- 直接拼接URL:
http://127.0.0.1:8000/api/outlay?startdate=2023-02-14%2009:33:23&enddate=2023-02-14%2009:33:23 - 或者在Postman的「Params」标签页中添加:
- 键:
startdate,值:2023-02-14 09:33:23 - 键:
enddate,值:2023-02-14 09:33:23
- 键:
可选优化:添加参数验证
为保证传入的日期格式合法,可在控制器开头添加验证逻辑:
$request->validate([ 'startdate' => 'nullable|date', 'enddate' => 'nullable|date|after_or_equal:startdate', ]);
若传入的日期格式错误,接口会自动返回422验证错误响应,提升接口健壮性。
内容的提问来源于stack exchange,提问作者laraCoder
相关产品推荐
相关产品推荐

