[英]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.