Wir verwenden den JSON-API-Standard, um unsere API zu entwickeln, und wir sind über ein Problem gestolpert, das keine offensichtliche Lösung nach dem Standard hat, wie es scheint.JSON API: Erfolg Nachricht ohne Ressource
Usecase ist die folgende:
Es ist eine API-Endpunkt, den Sie Mailing-Listen abonnieren. Ein möglicher Ablauf ist, dass der Benutzer mit PENDING hinzugefügt wird, die bedeutet, dass der Benutzer E-Mail zur Bestätigung erhalten und aktivieren wird.
Wenn dies der Fall ist, möchten wir dem Frontend eine Nachricht zurückgeben, die dem Benutzer angezeigt werden kann, und ihn auffordern, auf den Link zu klicken.
Aus meiner Sicht ist dies nicht wirklich ein Fehlerzustand, eher eine Follow-up-Metainformation. Das bedeutet also, dass es nicht konzeptionell ist, es in die Fehlermeldungen zu schreiben. Auch wenn wir es in die Fehlermeldungen schreiben, muss das Frontend irgendwie von den "echten Fehlern" unterscheiden (Statuscodes haben eine so niedrige Auflösung, dass Kollisionen unvermeidlich erscheinen).
Wir geben jedoch keine Ressource zurück, sodass wir sie nicht als Metainformationen zur Ressource hinzufügen können. Im Moment habe ich keine Ahnung, wo ich diese Informationen veröffentlichen soll.
Eine mögliche Lösung wäre es, irgendeine Art von Response-Ressource zu definieren und sie dort hineinzusetzen, aber das scheint nur wie eine Dose Würmer.
Irgendwelche Ideen? Die Eingabe würde sehr geschätzt
Ich habe gerade gesehen, dass pro Spezifikation Sie in der Lage, ein Response-Objekt ohne eine Ressource, aber mit einer Top-Level-Kategorie _meta. Ist das, was Sie für die Erfolgsmeldung ermutigen würden oder haben Sie eine andere Option? – shokora
Ich würde 200/204 für Anfragen zurückgeben, die keine Folge-E-Mail haben (200, wenn Sie eine Nachricht haben möchten, 204, wenn Sie nicht möchten). Für Anfragen, die eine Folge-E-Mail erfordern, gebe ich eine 202 mit einem Body zurück, der relevante Informationen enthält, z. B. die Nachricht, die Sie bereitstellen möchten. Ich halte die ermutigende Botschaft nicht für Meta-Information, nein. –
Ich bin mir nicht sicher, was du mit dem letzten Satz meinst. Sie sagen, Sie würden einen Körper mit der ermutigenden Nachricht zurückgeben, aber nicht im Meta-Feld? Wo würdest du es hinstellen? Oder denken Sie nicht über die JSON-API-Spezifikation nach? – shokora