2016-06-01 9 views
1

Derzeit habe ich ein Web-API-Projekt mit FluentValidation eingebunden, um die eingehenden Anfragen zu überprüfen. Dies funktioniert gut, um sicherzustellen, dass die Anfragen sinnvoll sind.Web-API-Verifizierung von Anfragen

Mein nächster Schritt ist, die Anfrage zu überprüfen. Was ich damit meine ist, einige POST (create) fordert Anbindung an bestehende Einrichtungen und kann die folgenden Prüfungen erfordern:

  1. Ich muss überprüfen, ob die verknüpften Einheiten gehören zu den aktuellen Benutzer
  2. Überprüfen Sie, ob die Der Benutzer hat bereits eine Entität "Aktiv" des gleichen Typs angefordert.
  3. Überprüfen Sie, ob die verknüpften Einheiten die angeforderte Einheit unterstützen

Wie kann ich diese Kontrollen tun? Ich möchte es nicht in meine FluentValidation einbinden, da dies nur die Anfragen validieren soll und ich keine Reisen in die Datenbank machen möchte, wenn ich eine ungültige Anfrage wegen der Validierung zurücksende.

Ich könnte diese Prüfungen in jede Methode in der Steuerung hinzufügen, aber das scheint nicht sehr nett. Gibt es eine Aktion oder etwas Ähnliches, das ich anschließen kann, das nach FluentValidation aufgerufen wird, aber bevor es den Controller trifft?

Dank

Alex

Antwort

2

Es ist möglich, custom Action Filters zu erstellen, um diese Kontrollen zu tun, aber nach meiner Erfahrung ist es nicht typisch Sinn, so zu tun, es sei denn das, was Sie für überprüfen möchten, ist zu fast jeder Anfrage (zB sicherstellen, dass der Benutzer eingeloggt ist).

Ich würde nur die Logik für die Arten von Prüfungen, die Sie sprechen in separate Dienstprogramm Klassen, wo es leicht wiederverwendet werden kann, und machen es die Verantwortung jeder Aktion, um die entsprechenden Hilfsmethoden basierend auf was Prüfungen benötigen aufrufen für diese Aktion auftreten.

+1

Ich habe einen Fehler in meinem Überblick über mein Projekt gemacht, ich mache tatsächlich die FluentValidation Prüfung in der Aktion, also wenn ich es als Action Filter tun würde, dann wäre es vor der Validierung, die ich nicht will. Ich werde mit Ihrem Vorschlag fortfahren und es als eine Nutzungsklasse tun, zumindest so, dass die Validierung und Überprüfung in Übereinstimmung bleiben. – ADringer