使用Dingo API在Laravel 5.4中进行异步

问题描述 投票:1回答:1

我想用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)吗?

谢谢。

php api asynchronous laravel-5.4
1个回答
0
投票

您可以在完成所需的一切(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.
}

顺便说一句:你需要注册中间件。

© www.soinside.com 2019 - 2024. All rights reserved.