Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby/Sinatra API中的验证模型_Ruby_Validation_Rest_Sinatra - Fatal编程技术网

Ruby/Sinatra API中的验证模型

Ruby/Sinatra API中的验证模型,ruby,validation,rest,sinatra,Ruby,Validation,Rest,Sinatra,我正在用Ruby在Sinatra之上构建一个平台的RESTAPI 数据是在POST期间传入的,在那个阶段,我使用hash_validator根据为每个路由构建的验证哈希检查已解析JSON的格式 POST数据(如果有效)将作为单个散列传递到中,以创建新类(例如用户)。所以在初始化时,我检查每个变量,以确保它们存在并且不是零 同一对象的部分可以驻留在不同的集合中(UserInfo、UserSubscriptions、UserPasswordHash等),因此当从数据存储加载类时,我再次验证通过(在我

我正在用Ruby在Sinatra之上构建一个平台的RESTAPI

数据是在POST期间传入的,在那个阶段,我使用hash_validator根据为每个路由构建的验证哈希检查已解析JSON的格式

POST数据(如果有效)将作为单个散列传递到中,以创建新类(例如用户)。所以在初始化时,我检查每个变量,以确保它们存在并且不是零

同一对象的部分可以驻留在不同的集合中(UserInfo、UserSubscriptions、UserPasswordHash等),因此当从数据存储加载类时,我再次验证通过(在我的例子中是Mongo)接收到的每个散列

到目前为止,这是可行的,但是代码中重复了很多变量名,而且可能仍然不能证明数据


我尽可能地遵循我的工程直觉,但是在应用程序的各个阶段验证输入时,是否有一个通用的模型可以遵循?

从数据库加载数据时,您永远不需要检查验证。如果你在进来的路上验证了,你可以假设它是有效的。我会在一个步骤中执行验证。使用传递的数据初始化对象,并检查以确保各种属性有效。如果发布的数据无效,则属性验证将失败

如何通知API用户丢失的数据?类中可能缺少User.photo.url,但是如何告诉用户问题的原因是它们没有包含{User:{photo:{url:}}}}您是否使用嵌套属性传回该数据?Rails应该为您解决这个问题,它是Ruby/Sinatra应用程序,不使用Rails。我的错,您使用的是什么ORM?Activerecord附带了对嵌套属性的内置支持,我认为datamapper也可以用于此场景