json - 使用自定义 json 响应进行 Laravel 验证
问题描述
快速提问。是否可以更改 laravel 的 JSON 验证响应?这是针对我在 Laravel 中构建的自定义 API。
验证过程
$validation = $this->validate(
$request, [
'user_id' => 'required',
]);
响应在 json 中显示如下
{
"message": "The given data was invalid.",
"errors": {
"user_id": [
"The user id field is required."
],
}
}
最好是变成这样。
{
"common:" [
"status": "invalid",
"message": "Param xxxx is required",
],
}
改变这种情况的最佳方法是什么?甚至可能吗?
谢谢你。
解决方案
您可以这样做,它将在全球范围内反映出来。导航到下面的文件夹并使用 Controller.php app/Http/Controllers
use Illuminate\Http\Request;
在 Controller.php 中编写以下方法并根据需要更改响应。
public function validate(
Request $request,
array $rules,
array $messages = [],
array $customAttributes = [])
{
$validator = $this->getValidationFactory()
->make(
$request->all(),
$rules, $messages,
$customAttributes
);
if ($validator->fails()) {
$errors = (new \Illuminate\Validation\ValidationException($validator))->errors();
throw new \Illuminate\Http\Exceptions\HttpResponseException(response()->json(
[
'status' => false,
'message' => "Some fields are missing!",
'error_code' => 1,
'errors' => $errors
], \Illuminate\Http\JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
}
}
我已经用 Laravel 5.6 试过了,也许这对你有用。
推荐阅读
- python - Python urllib.request - 如何设置标头
- mobile - DRM - 如何保护移动应用程序上的许可证 URL
- azure - Powershell Send-MailMessage 在 Azure Pipeline 上的身份验证失败
- c# - 强制密码包含小写、大写、特殊字符和数字
- python - Pynistaller .exe 似乎没有嵌入 Python
- openssl - F5 LTM:从分区运行 openssl s_client -connect?
- excel - 我想找到一列中每一行之间的差异并将其存储为变量,然后如果值大于 1,则插入那么多空白行
- mysql - 尝试从 Azure Pipelines 访问 MySQL 数据库时出现“用户拒绝访问”
- c - 无效的参数被传递给 C 中的函数
- c++ - 计算 CPP 程序使用的内存量