2017-04-13 2 views
0

In meiner web.php Datei, ich habe eine Route, die wie folgt aussieht:Unterscheiden zwischen einem Anruf von Webroute vs API-Route?

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

Und in meiner api.php Datei, habe ich eine Route, die wie folgt aussieht:

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

Beachten Sie, dass sie beide Anruf die gleiche Methode, getFeed().

Gibt es eine Möglichkeit zu unterscheiden, ob der Aufruf von der Webroute über die API-Route in der Controller-Methode kam? Ich muss in der Lage sein, zwei verschiedene Antworten zurückzugeben, eine für die Webroute und eine für die API-Route. Hier

ist die HomeController.php Klasse:

class HomeController extends Controller 
{ 
    public function getFeed() { 
     $user = Auth::user(); 

     // How to check if call is from web route or API route? 
     // Need to return two different responses for each scenario. 
    } 
} 

Dank.

+0

können Sie '$ request-> url();' verwenden, um Request URL zu erhalten und basierend auf Anfrage-URL können Sie unterschiedliche Verarbeitung in der gleichen Funktion haben ... –

Antwort

0

diese Zeile ersetzen
Route :: get ('Feeds', 'HomeController @ getFeed'); mit Route :: get ('api/feeds', 'HomeController @ getFeed');

bedeutet hinzufügen API-Präfix in allen Ihren API-Routen.

es wird Ihnen helfen, zu identifizieren, welche Route von api kommen und welche nicht.

überprüfen Sie unter Code

if (Request::is('api*')) { 
    echo "request from api route"; 
    exit(); 
}else{ 
    echo "request from web"; 
    exit(); 
} 
0

In den Schuhen verwenden kann, würde ich 3-Controller erstellt haben, die Anfragen und wie Niraj vorgeschlagen, getrennte Routen durch das Präfix die api Route mit/api/

zu handhaben
class HomeController extends Controller 
{ 
    public function getFeed(entrypoint) { 
    $user = Auth::user(); 
    // do the common magic here ... 
    } 
} 


class WebHomeController extends HomeController 
{ 
    public function getFeed() { 
     feed = this.getFeed(); 
     // do the crazy web magic here ... 
    } 
} 

class APIHomeController extends HomeController 
{ 
    public function getFeed() { 
     feed = this.getFeed(); 
     // do the crazy api magic here ... 
    } 
} 

Route::get('feeds', '[email protected]'); 
Route::get('api/feeds', '[email protected]'); 
Verwandte Themen