首页 > 解决方案 > 如何在请求的整个生命周期中保留请求数据 Laravel Lumen?

问题描述

我正在使用 Lumen 构建一个 API,并且我试图找出在整个请求期间将数据保存在内存中的最佳方法。这个想法是避免写入数据库或使用类似Redisor的东西Memcached。所以,基本上,我想创建一个全局变量,我可以一直操作它,直到 http 操作完成,然后它可以从内存中消失。

例如,如果我向POST我的路由发送带有正文的请求/api/v1/postme,我想接受 POST 请求并再次调用另一个服务以检索一些数据。我想获取该数据并将其与POST请求中的原始数据合并。然后,我想获取新合并的数据,并在进行更多翻译后将其作为响应发送。

我在网上的一些帖子中读到,可以使用.env文件中的应用程序配置变量作为内存中数据的临时存储,但我想知道是否有不同的或可能更好的方法来实现这一点。

我通读了 Laravel/Lumen 文档,似乎我可以写入 Lumen 缓存,但我认为这会导致建立数据库连接,这不是我想要的。

标签: phplaravelhttprequestlumen

解决方案


如果您想使用 lumen 的配置模块,请按照此操作。

当请求到达时,点击 myfunc

控制器.php

    public function myfunc(Request $request){
        app('config')->set('someuniquekey', $request);
        // call some other api
        $client = new \GuzzleHttp\Client(..);
        $response = $client->post(..);


        //retrive the value stored in config
        $request= config('someuniquekey');

        //merge $request and $response


        //This can be accessed in class method/ helper function too
        $this->func2();
        func3();
    }

    private function func2(){
        $request= config('someuniquekey'); // WORKS
    }

助手.php

    function func3(){
        $request= config('someuniquekey'); // WORKS
    }

推荐阅读