Обработка Laravel (Request $ request), как проверить, что ввод в правильном формате json? - PullRequest
0 голосов
/ 19 сентября 2018

Итак, я создаю API, который принимает входные данные json, и перехватывает его в контроллере с помощью запроса:

{
    "val1": "11",
    "val2": "1000",
    "val3": "1001010",
    "val4": "1001"
}

Однако мне нужно поймать условие, когда пользователь не использовал правильный json,скажем так:

{
    "val1": "11",
    "val2": "1000",
    "val3": "1001010"
    "val4": "1001"
}

Когда я возвращаю запрос $ в неверном формате ввода, я получаю пустой массив.Однако я попытался использовать isset(), empty(), count() по запросу, но он все еще не проверял параметры.

public function foo(Request $request)
{
   if(jsoniswrong($request)){return 'false';}
}

Мне нужен способ проверить переменную запроса без необходимости вызоваКаждое значение, как мне это сделать?

редактировать: я закончил, используя это, что проще.Я только что понял в Laravel, empty ($ request) никогда не вернет true, потому что даже при неправильном запросе у него все еще есть объекты, отличные от фактических входных данных.Чтобы получить входные данные, используйте all ().Это решило мою проблему.

    if(empty($request->all())){
        return false;
    }

1 Ответ

0 голосов
/ 19 сентября 2018

Вы можете проверить входящий request для json, используя метод validate () .Вы можете достичь этого, выполнив следующее:

public function foo(Request $request)
{
    $data = $request->validate([
        'json' => 'required|json'
    ]);

    // continue process
}

Здесь мы используем правило required , чтобы убедиться, что json был пройден.Затем мы используем правило json , которое проверяет, передано ли действительное значение json.| используется для разделения правил валидации.

Если json недействителен, будут возвращены данные об ошибке.

Обратите внимание , вы должны указатьfield/key входящих данных json совпадает с ключом в массиве validate().например, если field/key называется data, это должно быть ['data' => 'required|json'].

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