Laravel one API Endpoint с другой проверкой запросов

На данный момент я создаю 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?
  }

}

Итак, где и как мне передать переменную запроса в свой собственный класс и проверить ее? или я должен пойти со многими, если (а) путем?

Добавлен:

Проверьте валидацию required_if в laravel. laravel.com/docs/5.6/validation#rule-required-if

Karan 03.05.2018 11:50

интересно, я просто знаю, что такая проверка есть, но разве не должно быть сложно ее прочитать и реализовать, если на ней есть какая-то вложенная логика? например, требуется, если type == 1 && (type == 2 || type == 3)?

euclid135 03.05.2018 12:00

В приведенном выше случае вам нужно построить массив правил в соответствии с вашим состоянием и вернуть его в FormRequest. Вы можете получить доступ к отправленным данным, используя $this

Karan 03.05.2018 12:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
109
0

Другие вопросы по теме