2017-02-17 2 views
1

Eigentlich bin ich etwas verwirrt, während Laravel api Route-Datei. Meine Frage ist -Laravel 5 api Route

Wenn ich auf die Daten meiner Website in anderen Plattform (wie Android-App), die mit Laravel gemacht wird, zugreifen müssen, dann sollte ich eine andere Route in api.php Datei erstellen.

Wenn ja, dann werde ich für jede Anforderung zwei Routen und Steuerungen erklärt werden, zuerst in web.php und zweiten in api.php. Ist es richtig??

Grundsätzlich mag ich darum bitten, dass, wie ich eine api machen kann, so dass ich die Daten in Website zugreifen kann, sowie in anderen Plattformen?

ich dies für ein gutes Tutorial war auf der Suche, aber ich habe einen guten nicht bekam.

+0

Im Idealfall würden Ihre API-Routen Daten in einem Format zurückgeben, das von APIs wie JSON konsumierbar ist. Ihre Web-Routen sollten tatsächliche Webseiten zurückgeben. – Samsquanch

+0

Also, sollte ich verschiedene Route und Controller für API und Website haben? –

+0

Wie viele Leute es machen, schreiben Sie zuerst Ihre API mit API-Controllern, dann schreiben Sie Ihre Web-Controller, um die Daten von der API zu konsumieren. Dies setzt voraus, dass Ihr Frontend eingerichtet wird, diese APIs zu verwenden (über Vue oder ein anderes JS-Framework). Wenn Sie nicht möchten, dass das Frontend auf Ihrer API basiert, schreiben Sie Ihre Web-Controller komplett getrennt von der API. – Samsquanch

Antwort

1

Idealerweise sollten die API-Routen und Webrouten komplett unterschiedlich sein, aber wenn Sie möchten, dass sie gleich sind, können Sie Routen in nur web.php hinzufügen und einen speziellen Parameter von Ihrem Client hinzufügen und in der Steuerung, wenn Sie den Parameter erhalten, dann geben Sie das JSON-Objekt zurück oder geben Sie die Ansicht zurück.

Eg.

web.php

Route::get('getUsers','[email protected]'); 

UserController.php

... 
public function getUsers(Request $request) 
{ 
    ... 

    if ($request->has('api')) { 
     return $users; //API Route (Laravel will by Default return the JSON Response no need to do json_encode) 
    } 

    return view('pages.user_list'); //Normal Routes hence returning View 
} 
... 

Anfragen Normale Anfrage

<Yourdomain>/getUsers 

API anfordern

<Yourdomain>/getUsers?api=true 

ich das half hoffen ...

+0

Dann wie werde ich senden csrf Token im Falle von API-Anfrage .. –

+0

2 Optionen 1) Deaktivieren Sie die CSRF-Validierung für diese Routen (nicht empfohlen), 2) Sie können eine API, wo Sie das CSRF-Token und in der nächsten Anfrage zurückgeben können Sie können es einfach von Ihrem Kunden weitergeben. und für die Token-Authentifizierung können Sie JWT Auth https://github.com/tymondesigns/jwt-auth verwenden –

1

Ihre api Routen in api.php und Web-Routen in web.php schreiben.

Die Api Routen haben immer den Namen api in den Routen also können Sie die Routen unterscheiden., Ich erwähnte hier, weil als @Akshay Khale erwähnte ein Beispiel mit Abfrage-Parameter.

Wenn Sie den gleichen Controller für API und Web verwenden möchten, haben Api Requests immer die Header Content-Type : Json und "Accept":"application/json" so in Ihrem Controller können Sie es wie folgt tun.