我想用DINGO制作的APIS可以运行ASYNC。 目前,我的api是同步的,因为当我尝试使用sleep命令请求API然后我调用另一个api时,第二个api只是在睡眠时间传递firt请求时返回值。 这是我用来测试的代码:
第一条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(在Laravel 5.4中使用DINGO构建)运行ASYNC(当第一个api请求正在休眠时可以请求另一个api)吗?
谢谢。
您可以在完成所需的一切(Auth等)后立即响应请求,并且需要将中间件附加到端点,以便在返回响应后运行代码。
例:
在api.php中
$api->post('run', function () {
return response()->json([
"message" => "running"
], 200);
})->middleware("postRun");
在“postRun”中间件中
public function terminate($request, $response)
{
sleep(2000) // place your code here.
}
顺便说一句:你需要注册中间件。