Laravel 提供了内置的参数验证工具,可以让你定义参数需满足的规则,程序自动进行验证。如果验证成功,程序继续运行;如果失败,则自动返回响应并显示失败原因。
具体实现方式如下:
1. 创建自定义请求类
你可以通过命令行创建一个新的 FormRequest
类:
php artisan make:request BookRequest
在新创建的 BookRequest
类中定义验证规则:
public function rules()
{
return [
'book_id' => 'required|integer',
];
}
2. 在控制器中使用自定义请求类
在控制器方法中,将参数类型指定为自定义请求类:
public function someMethod(BookRequest $request)
{
// 验证通过后,获取 book_id 参数
$bookId = $request->post('book_id');
// 继续执行其他代码
}
3. 自动响应
当用户发送包含 book_id
的 POST 请求时,Laravel 会自动验证该参数:
- 如果验证通过,程序会继续执行控制器中的代码。
- 如果验证失败,Laravel 会返回一个包含错误信息的 422 响应。
替代方法:使用 Validator
类
如果你不想创建自定义请求类,也可以在控制器中使用 Validator
类:
use Illuminate\Support\Facades\Validator;
public function someMethod(Request $request)
{
$validator = Validator::make($request->all(), [
'book_id' => 'required|integer',
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
$bookId = $request->post('book_id');
// 继续执行其他代码
}
总结
使用自定义 FormRequest
类是最推荐的方式,因为它将验证逻辑与控制器分离,使代码更加清晰和易于维护。Laravel 会自动处理验证失败时的响应,满足你提出的需求。
通过以上步骤,你可以轻松实现对 book_id
参数的验证,确保其不为空且为数字,而无需手动编写额外代码来处理验证逻辑。