如果不退出RESTful范例,您如何以RESTful方式建模对象验证?最好解释一下我提出的理论用例......
想象一下,您的系统具有非常薄的Web层,可以调用后端RESTful服务。假设用户访问了注册表单并提交了它,Web层将直接将未经验证的数据发送到后端服务,如果服务以JSON格式响应验证错误,则可以将这些数据作为HTML发送回用户。
但是,想象一下我们希望在表单上有AJAX行为。例如,用户输入他们的电子邮件地址,我们希望使用AJAX进行验证,如果他们的电子邮件地址已经注册,则会向用户发送错误。
实现单个调用以验证电子邮件地址是否有意义,还是可以在后端服务中发送和验证整个对象?如果是后者,您可以使用哪个URL来验证对象,而不是实际创建它?
答案 0 :(得分:2)
过去我使用了沙盒子资源的概念来做你想要的事情,
http://example.com/customer/23/sandbox
这允许我发布增量备份并应用和验证更改但不实际提交。这对于传统的“保存/取消”类型对话框非常有效。
然而,我发现处理这些增量是一个真正的痛苦,所以我开发了一种不同的媒体类型,在客户端上记录了一系列事件,然后将该文档发布到沙箱资源。通过重放事件序列,我可以更简单地更新和验证服务器端资源。
后来我意识到我真的不需要独特的“沙盒”资源,现在我只是将“事件序列”文档直接发布到它正在影响的资源上。我在文档中有一些数据可以确定更改是永久性的还是暂时的。这取决于用户是否按下了保存按钮。
答案 1 :(得分:0)
验证单个表单字段可以在用户填写表单时改善用户体验,但是在提交表单时,我会验证整个对象,因为它不易出错。 URL可以只是https://mysite.com/users/emailvalidator来验证电子邮件(单个字段),表单可以发布到https://mysite.com/users(整个对象)。在前一种情况下,URL清楚地告诉您要使用的资源是能够验证电子邮件的对象。