【问题标题】:Field Validation with API/client setup in Ruby on Rails在 Ruby on Rails 中使用 API/客户端设置进行字段验证
【发布时间】:2016-08-29 14:35:25
【问题描述】:

我遇到了验证问题。我编写了一个 Rails 应用程序(API 仅使用 ActiveRecord 和 Doorkeeper 进行保护),它可以很好地验证每个请求,如果发生验证错误,它会在 json 中返回错误。

现在我正在构建使用 api 的客户端应用程序(也是一个 rails 应用程序,它没有 db 或 activerecord)。我可以在提交表单后返回验证错误,但是我们希望在提交表单之前在客户端实现 javascript 验证。包括检查某些字段的唯一性。

我可能比它应该做的更难,但是...... 如何实现这个?我是否使用 ActiveModel(用于简单的验证检查)?我将如何检查唯一性(我只能通过门卫访问 API)? 我是否应该为需要对客户端应用程序进行唯一验证的每个字段编写一个 ajax 请求,这将发出一个 api 请求来验证该字段的唯一性?

您认为最好的解决方案是什么?

【问题讨论】:

    标签: javascript ajax validation ruby-on-rails-5


    【解决方案1】:

    假设您的意思是您有两个 Rails 应用程序,一个托管 API(连接到数据库),另一个托管前端(没有数据库),我的第一个建议是减少一层复杂性并拥有您的 API 服务器还托管您的前端。除非您将其构建为一个庞大的系统,否则额外的复杂性不太可能值得可扩展性优势。

    无论如何,假设您坚持当前的计划,所有表单数据都会流经三个感兴趣的地方:

        [ front-end js ] ---> [ front-end Rails ] ---> [ back-end Rails ]
    

    每个地方可以有自己的验证。但是,由于您的后端 Rails 和前端 Rails 可能会强制执行完全相同的错误集,因此在前端 Rails 堆栈中添加任何验证几乎是多余的。我建议关注边缘:在前端 js 中进行所有验证,并在后端 Rails 堆栈中再次执行它们。您的后端验证错误应该通过前端流向用户,以便在极少数情况下触发它们。

    对于唯一性检查,我建议 - 正如您所建议的那样 - 您的 API 公开一个端点以检查您关注的字段的唯一性。或者,根据发生冲突的可能性,依靠后端验证来处理非唯一错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      • 2011-11-01
      • 1970-01-01
      相关资源
      最近更新 更多