Laravel one API Endpoint с другой проверкой запросов - PullRequest
0 голосов
/ 03 мая 2018

Я сейчас создаю 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) путь?

Добавлено:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...