首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 8 API调用未正确返回验证错误

Laravel 8 API调用未正确返回验证错误
EN

Stack Overflow用户
提问于 2021-12-02 07:43:30
回答 2查看 716关注 0票数 0

我正在使用Postman对我的API路由进行以下调用,一切正常工作,直到强制验证错误为止。返回的error对象不包含验证错误的完整列表,而是只有如下内容:

代码语言:javascript
复制
{"message":"The given data was invalid.","errors":{"email":["validation.email"],"password":["validation.min.string"]}}

我想要的是,它应该返回完整的错误消息,而不是"validation.min.string“。

以下是我的控制器方法:

代码语言:javascript
复制
public function __invoke(Request $request)
    {
        $credentials = $request->validate([
            'email' => 'required|email|max:255',
            'password' => 'required|min:8'
        ]);

        $credentials['status'] = true;

        if (Auth::attempt($credentials)) {
            return response()->json('login success!');
        } else {
            return response()->json('login failure!');
        }
    }

这是邮递员请求的屏幕截图。

截图

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-02 08:29:34

作为标准,我的评论是:

  1. 确保文件resources/lang/en/validation.php存在
  2. 如果是这样,请确保键emailmin存在。

作为附带说明:

您可以将文件夹lang移到顶层,它仍然可以工作。

所以resources/lang/en会变成lang/en

票数 0
EN

Stack Overflow用户

发布于 2021-12-02 07:57:40

创建新的FormRequest类并重写下面的方法

代码语言:javascript
复制
protected function failedValidation(Validator $validator) {
        $response = [
            'status' => false,
            'message' => $validator->errors()->first(),
        ];
        throw new HttpResponseException(response()->json($response, 422));
    }

或者使用以下代码:

代码语言:javascript
复制
use Illuminate\Support\Facades\Validator;

$validator = Validator::make($request->all(), [
   // your validation rules
])->stopOnFirstFailure(true);

$validator->validate();

它将只返回单个验证消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70195711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档