我应该在 Liberator 决策树的哪个位置验证表单输入?
:malformed?
似乎旨在检测无效的 JSON 或无效的表单主体。
这在一定程度上取决于您想到的验证类型,参见。这个讨论在这里关于逻辑错误的HTTP 400(错误请求)是否也应该用于表示逻辑错误。liberator 提供了许多决策点,这些决策点与从request-entity-too-large
检查正确的媒体类型等各种事情相关联。我建议查看有关HTTP 状态代码的维基百科页面,以了解哪个返回代码可能最适合您的验证,然后使用它来驱动您的建议,即哪个解放者决策点是相关的。
编辑:假设您要返回 422。您可以使用它processable?
来运行所需的检查,unprocessable-entity
如果检查失败,其处理程序将返回 422。或者您可以使用liberator.representation/ring-response
从您的处理程序或操作创建整个响应。另请参阅liberator google 组中的讨论。
我认为使用格式错误的句柄很好,但您也可以使用句柄不可处理实体。可能更重要的是保持一致。我会从客户端查看它,并决定哪个更有意义,哪个为客户端提供正确的粒度或反馈。例如,如果客户端获得足够的反馈以区分缺少的参数和提供但具有不可接受的值的参数很重要,那么您可能希望对第一个使用句柄格式错误,对第二个使用句柄不可处理实体. 另一方面,如果您只需要表明提供的(或未提供的)参数存在问题,那么仅使用格式错误的句柄可能是正确的选择,因为它将减少您的代码大小并简化所需的逻辑客户端。
我倾向于从仅使用句柄格式错误开始,然后在我发现需要区分这两种类型的故障时将其分解为句柄格式错误和句柄不可处理实体。