Laravel一个API端点,具有不同的请求验证

时间:2018-05-03 09:45:16

标签: php json laravel

我现在正在创建一个至少需要两个目的的入口点。

我的api.php

Route::post('/action', 'Api\ActionApiController@process')->name('action');

此网址将接受json类型的帖子数据。基于这个json,我将有不同的验证需要对这个json数据采用不同的方式。

例如

{
   "type" : 1,
   "data1" : "B",
   "data2" : "C"
}

逻辑应该像这样

如果type == 1则data1是必需的,data2是可选的。但是如果type == 2则data1是可选的,data2是必需的。

到目前为止,我创建了两个具有不同验证功能的自定义请求,因为如果type需要扩展,我不想让许多验证功能膨胀

所以我来了两个班级

class Data1Request extends FormRequest {
    public function rules()
    {
        return [
            'data1'           => 'required',
        ];
    }
}

和另一个班级

class Data2Request extends FormRequest {
    public function rules()
    {
        return [
            'data2'           => 'required',
        ];
    }
}

最后是我的控制器

public function process(Request $request){
   //check type: it is okay for me to put many if here, because this is only casting things to its type
  if($request->input('type') == 1) {
     //where should I cast my request and validate it?
  }

}

那么我应该在哪里以及如何将Request变量转换为自定义类并进行验证呢?或者我应该采用多种方式?

添加了:

0 个答案:

没有答案