gpt4 book ai didi

php - Laravel 5.2 - 使用 API 验证

转载 作者:行者123 更新时间:2023-12-04 00:38:49 25 4
gpt4 key购买 nike

我正在使用 Laravel 5.2 通过 REST JSON API 进行验证。

我有一个 UserController,它扩展了 Controller 并使用了 ValidatesRequests 特性。

示例代码:

$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:4|max:72',
'identifier' => 'required|min:4|max:36',
'role' => 'required|integer|exists:role,id',
]);

这会引发异常,因此在我的 Exceptions/Handler.php 中我有以下代码:

public function render($request, Exception $e)
{
return response()->json([
'responseCode' => 1,
'responseTxt' => $e->getMessage(),
], 400);
}

但是,当验证 responseTxt 时总是:

Array
(
[responseCode] => 1
[responseTxt] => The given data failed to pass validation.
)

我过去使用过 Laravel 4.2,记得验证错误提供了有关验证失败的更多详细信息。

我如何知道哪个字段未通过验证以及原因?

最佳答案

如果请求需要 JSON,则会抛出一个 ValidationException,它会呈现为单个通用消息。

不使用 validate() 方法,而是手动调用验证器,例如:

$validator = Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required|min:4|max:72',
'identifier' => 'required|min:4|max:36',
'role' => 'required|integer|exists:role,id',
]);
if ($validator->fails()) {
return new JsonResponse(['errors' => $validator->messages()], 422);
}

https://laravel.com/docs/5.2/validation#manually-creating-validators

顺便说一句,我建议使用 422 HTTP 状态代码而不是 400。400 通常意味着格式错误的语法。导致验证错误的事情通常意味着语法正确,但数据无效。 422 表示“不可处理的实体” https://www.rfc-editor.org/rfc/rfc4918#section-11.2

关于php - Laravel 5.2 - 使用 API 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37038229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com