2017-06-20 2 views
1

Ich möchte meine APIS gemacht mit DINGO kann ASYNC laufen. Momentan ist meine API sync, weil, wenn ich versuche, eine API mit dem Schlafbefehl anzufordern, und ich dann eine andere API anrufe, gibt die zweite API nur den Wert zurück, wenn die erste Anforderung über die Ruhezeit verstrichen ist. Dies ist der Code, den ich zu Test verwendet:Async in Laravel 5.4 mit Dingo API

Erste api Route:

public function checkLongRunning(Request $request){ 
     $data = $request->all(); 
     if($data['check'] == 1){ 
      sleep(5); 
      return response()->json(['error' => 'slept in 5 secs'], 500); 
     }else{ 
      return response()->json(['error' => 'bad request'], 500); 
     } 
    } 

Zweite api Route:

public function checkLongRunning2(Request $request){ 
     $data = $request->all(); 
     if($data['check'] == 1){ 
      return response()->json(['error' => 'OK'], 500); 
     }else{ 
      return response()->json(['error' => 'asd'], 500); 
     } 
    } 

Gibt es trotzdem kann ich meine API machen (Build mit DINGO in Laravel 5.4) Ausführen von ASYNC (kann eine andere API anfordern, wenn die erste API-Anfrage schläft)?

Vielen Dank.

Antwort

0

Sie können die Anfrage sofort beantworten, nachdem Sie alles Notwendige erledigt haben (Auth, usw.), und Sie müssen eine Middleware an den Endpunkt anhängen, damit Sie den Code nach der Antwort ausführen können.

Beispiel:

In api.php

$api->post('run', function() { 
         return response()->json([ 
          "message" => "running" 
         ], 200); 
        })->middleware("postRun"); 

In "Nachlauf" Middleware

public function terminate($request, $response) 
{ 
    sleep(2000) // place your code here. 
} 

BTW: Sie müssen die Middleware registrieren.