2016-08-29 4 views
0

Ich habe ein Problem mit Validierungen. Ich habe eine Rails-App (API nur mit ActiveRecord und Doorkeeper zum Schutz) geschrieben, die jede Anfrage einwandfrei überprüft, gibt die Fehler in JSON zurück, wenn ein Validierungsfehler auftritt.Feld Validierung mit API/Client-Setup in Ruby on Rails

jetzt baue ich die Client-App (auch eine Rails-App, die keine DB oder ActiveRecord hat), die die API verwendet. Ich kann die Validierungsfehler zurücksenden, nachdem ein Formular abgeschickt wurde, jedoch möchten wir die JavaScript-Validierung auf der Client-Seite implementieren, bevor das Formular gesendet wird. einschließlich einer Prüfung auf Eindeutigkeit in einigen Feldern.

ich mache das wahrscheinlich härter als es sein sollte, aber ... wie implementiert man das? Benutze ich ActiveModel (für einfache Validierungsprüfungen)? Wie würde ich eine Überprüfung auf Eindeutigkeit machen (ich bin nur in der Lage, auf die API durch Türsteher zuzugreifen)? Sollte ich eine Ajax-Anfrage für jedes Feld schreiben, das eine eindeutige Validierung für die Client-App benötigt, die eine API-Anfrage stellen würde, um die Eindeutigkeit des Feldes zu validieren?

Was ist Ihrer Meinung nach die beste Lösung?

Antwort

2

Angenommen, Sie meinen, Sie haben zwei Rails-Anwendungen, eine die API hostet (verbunden mit einer Datenbank) und eine andere hostet das Front-End (ohne Datenbank), mein erster Vorschlag wäre, eine Schicht Komplexität und Lassen Sie Ihren Frontend über Ihren API-Server hosten. Sofern Sie dies nicht als ein massives System planen, ist die zusätzliche Komplexität wahrscheinlich nicht die Vorteile der Skalierbarkeit wert.

Wie auch immer, vorausgesetzt, Sie sind mit Ihrem aktuellen Plan festhalten, alle Formulardaten fließt durch drei Orte von Interesse:

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

Jeder dieser Orte kann seine eigene Validierung haben. Da jedoch Ihre Back-End-Rails und Front-End-Rails vermutlich genau die gleichen Fehler erzwingen werden, ist es meist überflüssig, eine Validierung in Ihrem Front-End-Rails-Stack hinzuzufügen. Ich würde vorschlagen, auf die Kanten zu konzentrieren: alle Ihre Validierungen in der Front-End-js, und erzwingen sie erneut im Back-End-Rails-Stack. Ihre Back-End-Validierungsfehler sollten über das Front-End laufen, damit sie dem Benutzer im hoffentlich seltenen Fall, dass sie ausgelöst werden, ordnungsgemäß angezeigt werden.

Für Eindeutigkeitsprüfungen empfehle ich - wie Sie vorgeschlagen haben -, dass Ihre API einen Endpunkt zur Überprüfung der Eindeutigkeit der betroffenen Felder bereitstellt. Abhängig davon, wie wahrscheinlich eine Kollision ist, müssen Sie sich auf die Back-End-Validierungen verlassen, um nicht eindeutige Fehler zu behandeln.

+0

Danke für die Eingabe !!! –