如何使用Liberator验证表单POST数据



在Liberator决策树中,我应该在哪里验证表单输入?

:malformed?似乎旨在检测无效的JSON或无效的表单体。

这在一定程度上取决于您心目中的验证类型,请参阅SO上关于是否也应使用HTTP 400(错误请求)来发出逻辑错误信号的讨论。liberator提供了许多决策点,这些决策点与request-entity-too-large到检查正确的媒体类型等内容有关。我建议查看关于HTTP状态代码的维基百科页面,了解哪种返回代码可能最适合您的验证,然后使用它来推动您的建议,即哪个解放者决策点是相关的。

编辑:假设您想要返回422。您可以使用processable?来运行所需的检查,如果检查失败,其处理程序unprocessable-entity将返回422。或者,您可以使用liberator.representation/ring-response从处理程序或操作创建整个响应。另请参阅解放者谷歌小组中的讨论。

我认为使用handle deformed是可以的,但也可以使用,比如说,handle unprocessable实体。更重要的可能是保持一致。我会从客户端来看,并决定哪一个更有意义,哪一个为客户端提供了正确的粒度或反馈级别。例如,如果客户端获得足够的反馈以区分缺少的参数和提供的但具有不可接受的值的参数是很重要的,那么您可能希望对第一个使用handle-formed,对第二个使用handle unprocessable实体。另一方面,如果您只需要发出所提供(或未提供)参数有问题的信号,那么只使用句柄格式错误可能是正确的选择,因为这将减少代码大小并简化客户端所需的逻辑。

我倾向于从使用句柄格式错误开始,然后当我发现需要区分这两种类型的失败时,将其分解为句柄格式错误和句柄不可处理实体。

最新更新