Ich habe eine Reihe von Rest-APIs entwickelt, die für mobile Apps verfügbar sein sollen. Ich befolge das Repository-Muster für die Entwicklung des Laravel-Projekts. Wie implementiere ich einen Presenter und einen Transformer für die Formatierung einer konstanten JSON-Ausgabe im gesamten Set aller meiner APIs?
Zum Beispiel habe ich den folgenden Controller für den Login
%Vor%Wo kommt nun ein Transformator und ein Moderator ins Bild? Ich weiß, dass beide verwendet werden, um die Ausgabe zu formatieren, indem Sie das DB-Objekt konvertieren und ein formatiertes JSON erzeugen, so dass es über meine APIs einheitlich bleibt.
Die Dingo-API und Fractal oder sogar das Framework ( L5-Repository ) bieten keine detaillierte Dokumentation und ich kann ' Ich finde keine Tutorials dazu.
Ich habe den folgenden Präsentator und Transformator für eine andere API erstellt, die die Liste der Produkte
enthält %Vor%Moderator
%Vor%Wie setze ich den Moderator in den Controller und antworte zurück? Versucht
%Vor%Aber es scheint nicht zu funktionieren und das Dokument zeigt nicht die kompletten Schritte.
Ich hatte das gleiche genaue Problem und hier ist, wie ich Dingo mit Transformator
verwendet habeController:
%Vor%Transformator:
%Vor%und so behandle ich Fehler:
%Vor%Ich sehe gerade Ihre ähnliche Frage auch hier. So sehen Sie meine Antwort auf Ihre andere Frage hier: Ссылка .
Aus der anderen Frage, die ich abgeleitet habe, verwenden Sie Dingo
, verwenden Sie das also als strukturierte Antwortklasse. Stellen Sie sicher, dass Sie den Controller von Dingo
aus erweitern und dann können Sie Elemente und Sammlungen einfach in einer strukturierten Weise zurückgeben:
return $this->response->item($user, new UserTransformer);
return $this->response->collection($users, new UserTransformer);
Wenn Sie eine nette Fehlerbehandlung wünschen, suchen Sie hier nach den Dokumenten: Ссылка
Grundsätzlich können Sie jede der Kernausnahmen oder ein paar benutzerdefinierte Dingo
Einsen werfen. Die Dingo-Ebene fängt sie ab und gibt eine strukturierte JSON-Antwort zurück.
Wie in den Dingo-Dokumenten:
throw new Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException('Nope, no entry today!');
Erzeugt:
%Vor%Fractal ist hier vollständig dokumentiert: Ссылка Es gibt ein ausgezeichnetes Buch, das ich regelmäßig vom Phil Sturgeon Ссылка lese. Sie können die meisten Bücher finden verfügbar in github Ссылка . Sie können wirklich schöne Beispiele von Fractal dort finden.
Transformatoren transformieren Objekte in einem konsistenten json-Format, so dass alle Ihre Endpunkte für jede Entität das Gleiche liefern.
Haben Sie wirklich keine Antwort auf diese