如何使用FormRequest验证传入的JSON:API请求

时间:2019-03-29 08:23:17

标签: json laravel forms validation request

我已经使用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结构,该解决方案将变得非常混乱。

0 个答案:

没有答案