我已经使用Laravel创建了一个API服务器,并设置了FormRequests来处理服务器的传入请求。一切都很好。现在,我试图切换我的API服务器以遵循https://jsonapi.org/规范,但是我不知道如何切换验证以处理复杂的传入(POST,PUT,PATCH)JSON结构。
我发现唯一可行的解决方案是按照代码块中显示的模式在每个FormRequest扩展类,规则中使用。
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'data' => 'required',
'data.type' => 'required|string',
'data.id' => 'sometimes|required|string',
'data.attributes' => 'sometimes|required',
'data.attributes.name' => 'string',
// ...
];
}
/**
* Get data to be validated from the request.
*/
protected function validationData(): array
{
return $this->json()->all();
}
我想出的解决方案可以完成这项工作,但是我正在寻找一种更干燥的解决方案,因为如果我要验证更复杂和嵌套的JSON结构,该解决方案将变得非常混乱。