在Ruby on Rails中使用API/客户端设置进行字段验证
Field Validation with API/client setup in Ruby on Rails
我有一个验证问题。我写了一个rails应用程序(API只使用ActiveRecord和Doorkeeper保护),它验证每个请求都很好,如果发生验证错误,它会返回json中的错误。
现在我正在构建使用api的客户端应用程序(也是一个rails应用程序,它没有db或activerecord)。我能够在提交表单后返回验证错误,但是我们希望在提交表单之前在客户端实现javascript验证。包括对某些字段的唯一性检查。
我可能使这个比它应该更难,但是…如何实现这一点?我是否使用ActiveModel(用于简单的验证检查)?我如何做唯一性检查(我只能通过门卫访问API)?我应该为每个字段写一个ajax请求,需要唯一的验证客户端应用程序,这将使api请求验证字段的唯一性?
你认为最好的解决办法是什么?假设你的意思是你有两个Rails应用程序,一个托管API(连接到数据库),另一个托管前端(没有数据库),我的第一个建议是削减一层复杂性,让你的API服务器也托管你的前端。除非你将其架构为一个庞大的系统,否则额外的复杂性不太可能值得可伸缩性的好处。
无论如何,假设您坚持当前的计划,所有表单数据都流经三个感兴趣的地方:
[ front-end js ] ---> [ front-end Rails ] ---> [ back-end Rails ]
的每一个位置都可以有自己的验证。但是,由于后端Rails和前端Rails可能会强制执行完全相同的错误集,因此在前端Rails堆栈中添加任何验证基本上是多余的。我建议关注边缘:在前端js中进行所有验证,并在后端Rails堆栈中再次执行它们。您的后端验证错误应该流经前端,以便正确地显示给用户,在极少数情况下,它们会被触发。
对于唯一性检查,我建议——就像你建议的那样——你的API公开一个端点来检查你所关心的字段的唯一性。或者,根据冲突的可能性,依赖后端验证来处理非唯一错误。
- 标签客户端的设置值
- SignalR客户端启动连接时如何设置用户
- 设置客户端的浏览器内存
- 客户端:如果文本框1和文本框2设置计数器++
- 你能在客户端将应用程序设置为只有Javascript,在远程服务器上设置为PHP吗
- 如何使用javascript客户端设置Python服务器端
- 从客户端(jQuery或JavaScript)设置ASPXGredView设置文本标题
- 如何读取最终用户客户端的控制面板设置
- 如何使用客户端 API 设置 p:selectOneRadio 的值
- 注册客户端脚本不适用于设置数组值
- 客户端将多部分/表单数据请求的文件部分的内容类型设置错误
- 在 ASP.NET Web 窗体中从 javascript/客户端设置属性背后的代码
- 如何为客户端设置 Meteor WebSocket 端口
- 引导日期选择器占用客户端PC时间,如何从服务器设置默认时间
- 设置主体宽度,与客户端窗口相同
- 根据杜兰达尔中客户端视图模型的状态在页面视图模型中设置属性
- 在asp.net 3.5中为动态生成的文本框设置客户端id static
- 在浏览器中动态设置客户端
- 为什么在使用长轮询时设置客户端超时
- 使用命令设置客户端超时时间