2017-06-20 138 views
1

我希望使用DINGO製作的APIS可以運行ASYNC。目前,我的api是同步的,因爲當我嘗試請求帶有sleep命令的API,然後我調用另一個api時,第二個api只是在firt請求通過睡眠時間時返回值。這是我用來測試的代碼:在Laravel 5.4中使用Dingo API異步

第一API路線:

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); 
     } 
    } 

第二API路線:

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); 
     } 
    } 

反正是有,我可以讓我的API(建立與Dingo在Laravel 5.4 )運行ASYNC(當第一個API請求正在休眠時可以請求另一個API)?

謝謝。

回答

0

您可以在完成您所需的一切(Auth等)後立即響應請求,並且需要中間件附加到端點,以便在返回響應後運行代碼。

例子:

在api.php

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

在 「後運行」 中間件

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

BTW:你需要註冊的中間件。