繁体   English   中英

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

[英]Async in Laravel 5.4 with Dingo API

我想用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.
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM