2017-06-20 139 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:你需要注册的中间件。