dingo 内部调用时使用 Laravel 的表单验证问题
-
dingo
中内部接口调用, 当使用laravel
(版本 5.5) 表单验证时, 接口会一直报出422
状态码错误。 -
相关代码如下:
- 业务逻辑:提交体验课时创建一个学员
-
相关控制器代码如下:
-
提交体验课
$request->validate([ 'phone' => ['required', 'regex:/^1[3456789]\d{9}$/'], 'name' => ['required'], ]); // 调用创建学员接口 $this->api->with($request->all())->post('/api/students');
-
创建学员
$request->validate([ 'phone' => ['required', Rule::unique('students', 'phone')], 'datasoure' => ['required'], ]);
-
-
接口返回:
"message": "422 Unprocessable Entity", "status_code": 422,
-
体验课提交
接口验证可以通过,创建学员
接口验证通不过; 依赖注入时的是Illuminate\Http\Request
对象; 但是发现dingo
内部调用时实例化后的是InternalRequest
对象; 但是实则是继承关系; 希望得到解决方法. 谢谢
/app/Http/Controllers/Api/Controller.php
上面是公共的控制器,写的控制器继承这个控制器即可
使用
app/Http/Validations/Api/Front/ArticlesValidation.php
app/Http/Controllers/Api/Front/ArticlesController.php
错误处理
需要去
app/Providers/AppServiceProvider.php
手动捕获ValidationException
异常以上代码应该就是我使用
dingo api
处理接口错误的逻辑了@kenuo 谢谢 关于这个问题, 实则是本人并没有完全理解
laravel
表单验证逻辑, 因为创建学员
接口中的unique
规则不通过, 但没有详细的报错信息, 只有状态码, 所以一直没弄清楚问题出现在哪里, 一直以为是内部调用失败.解决方案如下:
@sane
我这里就是手动捕获
ValidationException
错误。返回返回给前端啊