Wie laravel 5.1-Anwendung für Web-Client und native mobile Apps zu entwerfen

9

Ich möchte eine Laravel 5.1-Anwendung für Web und Apps für mobile Apps erstellen. Ich möchte JSON für eine API-Anfrage zurückgeben und für den Webbrowser anzeigen. Zur Zeit habe ich verschiedene Routen und verschiedene Controller eingerichtet. Bei diesem Ansatz wiederhole ich den Code. Ich weiß nicht, was der beste Ansatz ist, um diese Architektur zu entwerfen. Außerdem habe ich ein paar ähnliche Threads durchlaufen, die angular.js für den Webbrowser empfehlen.

%Vor%     
Ashish 07.08.2015, 05:15
quelle

2 Antworten

2

Sie können zwei grundlegende Ansätze haben:

  • Behalten Sie separate Routen und Controller bei, aber verschieben Sie den gesamten Code Ihres gemeinsamen Controllers in einen Dienst. Dies ist wahrscheinlich die sauberste und flexibelste Lösung, da es die Aktualisierung von API- und Webmethoden in Zukunft sehr einfach macht.
  • Oder Sie können sowohl API- als auch Web-Anfragen an denselben Controller weiterleiten, das Request-Objekt dorthin übergeben und dann anhand eines Anfrageattributs entscheiden, welche Antwort zurückgegeben werden soll, json oder html.

Für den zweiten Ansatz könnte man es beispielsweise so machen:

%Vor%

Sie können auch die Methode $ request- & gt; wantsJson () verwenden, um Accept: header zu überprüfen, oder Sie könnten eine spezielle GET-Variable (zB ?_format=json ) mit allen API-Aufrufen übergeben, um das Antwortformat zu definieren. wie schon von @ Bogdan Kuštan vorgeschlagen. IMHO, wenn Sie bereits API-Präfix auf Ihren URLs verwenden, ist es zuverlässiger und sauberer, nur um das zu überprüfen.

    
ivanhoe 09.09.2015 03:45
quelle
1

Eine Möglichkeit wäre, Content-Negotiation zu verwenden. Sie würden den Header Accept: application/json übergeben und Ihre App würde die Antwort im JSON-Format zurückgeben. Einige Proxy-Server respektieren jedoch nicht die Inhaltsverhandlung. Ihre App würde dann brechen. (Sie können mehr darüber lesen, warum Drupal die Inhaltsverhandlung abgebrochen hat. hier ).

Eine andere Möglichkeit besteht darin, eine GET Variable zu verwenden, um das angeforderte Format zurückzugeben, zum Beispiel: /api/product?format=json

Auch Sie können die Variable von /api aufrufen:

%Vor%

Oder Sie können URI direkt analysieren und sehen, ob es mit /API beginnt (nicht empfehlen). Meine Auswahl wäre Content Negotiation oder / und format GET Variable.

    
Bogdan Kuštan 07.08.2015 05:36
quelle