Я сейчас создаю API, который должен быть одной точкой входа как минимум для двух целей.
Мой api.php
Route::post('/action', 'Api\ActionApiController@process')->name('action');
Этот URL будет принимать данные постов в формате 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 к своему пользовательскому классу и проверить ее? или я должен идти со многими, если (s) путь?
Добавлено: