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%Sie können zwei grundlegende Ansätze haben:
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.
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:
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.
Tags und Links php design-patterns laravel-5 laravel laravel-5.1