繁体   English   中英

Laravel(Request $ request)处理如何检查输入是否为正确的json格式?

[英]Laravel (Request $request) handling how to check if input is in the correct json format?

所以我正在构建一个接受json输入的api,并使用Request在控制器中捕获它:

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

但是,当用户未使用正确的json时,我需要抓住一个条件,像这样说:

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

当我以错误的输入格式返回$ request时,得到了空数组。 但是我尝试根据要求使用isset()empty()count() ,但是它仍然没有检查参数。

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

我需要一种无需调用每个值即可检查请求变量的方法,该怎么办?

编辑:我最终使用了它,这更简单。 我刚刚在Laravel中意识到,empty($ request)永远不会返回true,因为即使在错误的请求下,empty($ request)仍然具有除实际输入数据以外的对象。 要获取输入数据,请使用all()。 这解决了我的问题。

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

您可以使用validate()方法验证 json的传入request 您可以通过执行以下操作来实现:

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

    // continue process
}

在这里,我们使用必需的规则来确保已传递json 然后,我们使用json规则检查是否已传递有效的json A | 用于分隔验证规则。

如果json无效,则将返回有关错误的数据。

请注意 ,您必须将传入json数据的field/key命名为与validate()数组中的关键字相同。 例如,如果field/key被称为data则必须为['data' => 'required|json']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM