2017-01-22 5 views
0

Ich bin sehr neu in Laravel und frage mich, wo wäre der ideale Ort, um eine Verbindung zu einer 3rd-Party-API zu stellen. Hier ist der allgemeine Ablauf der Anforderung, die in meinem System passieren mussLaravel (4.2): Wo kann man API-Verbindungen von Drittanbietern installieren?

1) Benutzereingabe in Form tritt (mit Winkeldaten zu senden

2) Routen-Datei Routen zu einem Controller fordern Backend i erstellt in Laravel (Ich benutze tatsächlich eine Ressource, die ich mit der Laravel-Befehlszeile dafür erstellt habe)

3) Irgendwo muss ich einige der Daten von dieser Anfrage nehmen und es über CURL an eine dritte Partei senden und erhalten die Antwort zurück

4) Irgendwo anders, muss ich diese Antwort analysieren und einige Geschäftslogik darauf ausführen, wo Ich werde einige der Ergebnisse daraus ziehen und sie zurück zum Kunden schicken. Andere der Daten werden in einem Datenspeicher gespeichert (MySQL)

Jetzt nehme ich an, dass die Datenzugriffsebene das Laravel-Modell sein wird, das ich schließlich erstellen werde, aber ich bin verwirrt, wo der ideale Ort für den ist API-Verbindungskram und auch für das Business-Logik-Zeug.

Mein erster Gedanke war dies über eine Middleware soll getan werden, aber die Dokumentation weiter jetzt beim Lesen scheint es, wie dies nur eine Filterschicht ist. Ich könnte das natürlich in das Modell einbauen und das würde das Paradigma des "Fat Model Skinny Controllers" befriedigen, aber ich mag das aus irgendeinem Grund nicht. Ich möchte, dass meine Datenzugriffsebene unabhängig von der Geschäftslogik ist, und ich möchte diesen ganzen Mist auch nicht in den Controller einfügen, weil dies eindeutig falsch ist.

Also wohin soll es gehen?

+0

Aus Neugier, wenn Sie Laravel neu sind, warum beginnen Sie mit einer veralteten Version? Ist dies eine bestehende Codebase, die Sie übernehmen? – ceejayoz

+1

ich eigentlich nicht erkennen, dass es eine veraltete Version war, bis ich alles eingerichtet habe, wurde ich im Anschluss an diese: https://laravel.com/docs/4.2/quick#installation, die auf der laravel.com Seite ist und speziell zeigt Ich habe Version 4.2 installiert, also vermutete ich, dass dies die neueste Version war.- Nachtrag - und der Grund, warum ich zu diesem Link gekommen bin, war das erste Ergebnis des Googelns von 'laravel quickstart' –

+0

OK, du wirst definitiv mit Laravel 5.3 starten wollen, leider. Es gibt massive Verbesserungen zwischen 4 und 5 in Bezug auf die Codierung und Funktionalität. – ceejayoz

Antwort

1

Das ist mein Vorschlag:

Erstellen Sie eine Nur PHP-Klasse ExternalAPI und speichern Sie sie in einem Ordner namens API in der App-Ordner genannt. Erstellen Sie anschließend eine Methode, um den Aufruf an die API zu senden und die Ergebnisse zu analysieren. Sie können diese Klasse sogar in eine Facade einfügen, um die Benutzung zu vereinfachen.

Erstellen Sie dann eine weitere Klasse, die dafür verantwortlich ist, die analysierten Daten zu empfangen und die Geschäftslogik auszuführen. Nennen wir es APIProcessor und speichern es im App/API-Ordner.

Und schließlich, in der Steuerung, rufen Sie die Methode aus der ExternalAPI Klasse, übergeben Sie die Ergebnisse an die APIProcessor Klasse und dann erhalten Sie die Ergebnisse und zurück zum Benutzer zurück.

Offensichtlich sind diese Namen schlecht und Sie sollten bessere Namen zu diesen Klassen entsprechend Ihrer Geschäftsdomäne wählen und sogar andere Verzeichnisse wählen, um sie zu speichern, wenn Sie wollen.

Eine weitere gute Sache hier zu tun ist, eine Schnittstelle zu der Klasse zu erstellen, wird verantwortlich sein mit der API zu kommunizieren, so dass Sie durch ein anderes diese Klasse leicht ersetzen können, wenn nötig.

+0

Super, danke für den Vorschlag. Ich werde dies als richtig wahrscheinlich markieren, aber nur, nachdem ich es tatsächlich versucht habe (was könnte eine Weile dauern) –

+0

@DallasCaley Kein Problem, nehmen Sie so viel wie Sie brauchen, um eine gute Lösung zu finden, und wenn Sie das tun, teilen mit uns deine Erkenntnisse :) –