使用 Dingo/API 开发项目时,控制器中的请求参数验证错误,应该抛出什么异常?

Dingo/API 中Errors And Error Responses规定了大部门的异常,在实际项目中,控制器如果处理接口请求参数时,发现参数格式不正确、内容不符合规范、不在指定指等等类似的情况下时,我们应该选择抛出文档中的哪种错误?我一直非常纠结这个事情,求大神帮忙指教指教,谈谈你们的看法

       $rules = [
            'code'    => ['required', 'numeric']
        ];
        $messages = [
            'required'  => ':attribute 字段不能为空',
            'numeric'   => ':attribute 字段只能为数字',
        ];

    public function validator($request, $rules, $messages)
    {
        $validator = Validator::make($request->all(), $rules, $messages);
        if ($validator->fails()) {
            throw new \Symfony\Component\HttpKernel\Exception\HttpException(422, $validator->errors()->first());
        }
    }

上面是我们的返回。感觉还是不太正确

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 1

如果是验证参数,建议新建对应请求的 Request 如,StoreUserRequest 继承于 Dingo\Api\Http\FormRequest,然后在 UserController 里面的 store 方法注入 StoreUserRequest,即可自动验证,并返回 422 以及所有的验证错误信息。

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!