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