2016-03-24 13 views
0

Ich bin neu in REST API-Design und ich frage mich, wie man für ein Problem wie folgt definiert. Ich habe auch dargelegt, was ich zur Zeit im Auge haben, aber offensichtlich sehe ich viele Probleme mit ihmREST-API-Design für ein Alert-System

  • A Cluster hat Alerts
  • Alerts sind Instanzen von Alert_Type
  • Ein Alert_Type kann Cluster(s) zugeordnet werden. In diesem Fall wird die Cluster auch ohne Cluster
  • zugeordnet werden können, für Alerts von Alert_Type
  • Ein Alert_Type registriert, wenn ein Alert der Instanz Alert_Type in einem Cluster auftritt, eine Aktion tritt auf, wenn und nur wenn Alert_Type registriert ist ein Cluster und Alert_Type existiert

für die Zwecke dieser Frage, die ich mit dem REST-API-Design betroffen bin und Routen für die Alert_Type Zie ct und Cluster Objekt

Diese sind eine Teilmenge von REST Aktionen ich auf Cluster Objekt durchführen kann:

POST: Erstellen Sie ein neues Cluster Objekt. In dem Objekt namens ein Feld registered_alerts die Alert_Type Objekte registriert für dieses Cluster

DELETE enthalten könnte: Löschen eines vorhandenen Cluster Objekt

GET (on/alert_types): eine Liste von Alert_Type Objekte zurückgeben wird registriert mit diesem Cluster

diese sind eine Teilmenge von REST Aktionen ich auf Alert_Type Objekt durchführen kann:

POST: Erstellen Sie ein neues Objekt Alert_Type.

DELETE: Löschen eines bestehenden Alert_Type Objekt

GET: Erhalten Sie eine bestehende Alert_Type Objekt

Nun meine Fragen:

  1. Offensichtlich muss ich die Cluster und Alert_Type Objekte binden - Ich kenne sein nicht gutes Design, um diezu kopieren 0 Objekte in die Cluster Objekte. Also sollte ich vielleicht eine ID für jedes Alert_Type Objekt erzeugen und verlangen, dass der Cluster POST stattdessen eine ID sendet?Und dann eine Liste von IDs in dem Cluster Objekt hält
  2. Wenn die Cluster POST ein Bündel von Alert_Type IDs einigen hat, dass gültig sind, und einige, die nicht, wie gehe ich das?
  3. Die eindeutige ID für eine Alert_Type muss auf dem Server generiert werden, und zurückgegeben in der Antwort des POST Alert_Type - ist die richtige Möglichkeit, dies in einer REST-kompatiblen Weise zu tun?
  4. Glauben Sie, dass es erforderlich wäre, die Cluster IDs in die Alert_Type Objekte zu halten? Der einzige Grund kann ich sehen die Notwendigkeit für das ist, wenn ein Alert_Type gelöscht wird - und dann sollte das aktualisieren, um die Cluster Objekte, die für diese Alert_Type

Antwort

1

Ich versuche, beobachten Sie für jeden Punkt eine Antwort zu geben:

  1. Ja, Sie sollten die ID im Cluster-Objekt verwenden.
  2. Sie müssen einen Fehler zurückgeben und nichts speichern.
  3. Ich sollte die ID des erstellten Alert_Type in der POST-Antwort zurückgeben (zB. Json {'id': 'theId'}).
  4. Es hängt von der db-Implementierung ab: Wenn Sie die Cluster-Verbindung zum Löschen von Alert_type einfach wiederherstellen können, empfehle ich Ihnen, keine inverse Verbindung zu halten, da Sie dann ein weiteres Feld verwalten müssen.

Hoffnung kann ich helfen.