五月天激情丁香,国产精品2019,国产成人精品亚洲2020,国产精品免费视频一区二区三区,开心久久婷婷综合中文字幕,天堂视频在线观看免费完整版

onRequest 事件(即收到請求事件)

使用場景及原理

EasySwoole 收到任何的 HTTP 請求時,均會執行該事件。可以使用該事件可以對 HTTP 請求全局攔截,包括對請求進行允許跨域等操作。

使用方式說明

框架對 onRequest 事件的實現在 3.4.x 及以后的版本 中做了新的改動,實現方式由原來舊版本在主服務創建事件(mainServerCreate 事件)中定義改變為在 initialize 事件 中使用 Di 方式注入。目前最新穩定版本框架(3.4.x),具體實現及使用方式 (在 EasySwooleEvent.php 中的 initialize 事件中注入) 如下:

<?php

namespace EasySwoole\EasySwoole;

use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        date_default_timezone_set('Asia/Shanghai');

        // 實現 onRequest 事件
        \EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_GLOBAL_ON_REQUEST, function (\EasySwoole\Http\Request $request, \EasySwoole\Http\Response $response): bool {
            ###### 對請求進行攔截 ######
            // 不建議在這攔截請求,可增加一個控制器基類進行攔截
            // 如果真要攔截,判斷之后 return false; 即可
            /*
            $code = $request->getRequestParam('code');
            if (0){ // empty($code)驗證失敗
                $data = array(
                    "code" => \EasySwoole\Http\Message\Status::CODE_BAD_REQUEST,
                    "result" => [],
                    "msg" => '驗證失敗'
                );
                $response->write(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
                $response->withHeader('Content-type', 'application/json;charset=utf-8');
                $response->withStatus(\EasySwoole\Http\Message\Status::CODE_BAD_REQUEST);
                return false;
            }
            return true;
            */

            ###### 處理請求的跨域問題 ######
            $origin = $request->getHeaderLine('origin') ?: '*';
            $response->withHeader('Access-Control-Allow-Origin', $origin);
            $response->withHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
            $response->withHeader('Access-Control-Allow-Credentials', 'true');
            $response->withHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, token');
            if ($request->getMethod() === 'OPTIONS') {
                $response->withStatus(\EasySwoole\Http\Message\Status::CODE_OK);
                return false;
            }

            return true;
        });
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }
}

舊版本(3.4.x 之前版本)框架的 onRequest 事件的實現如下所示:

<?php

namespace EasySwoole\EasySwoole;

use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        // TODO: Implement initialize() method.
        date_default_timezone_set('Asia/Shanghai');
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }

    // 注冊 onRequest 事件回調
    public static function onRequest(Request $request, Response $response): bool
    {
        ###### 對請求進行攔截 ######
        // 不建議在這攔截請求,可增加一個控制器基類進行攔截
        // 如果真要攔截,判斷之后 return false; 即可
        /*
        $code = $request->getRequestParam('code');
        if (0){ // empty($code)驗證失敗
            $data = array(
                "code" => \EasySwoole\Http\Message\Status::CODE_BAD_REQUEST,
                "result" => [],
                "msg" => '驗證失敗'
            );
            $response->write(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
            $response->withHeader('Content-type', 'application/json;charset=utf-8');
            $response->withStatus(\EasySwoole\Http\Message\Status::CODE_BAD_REQUEST);
            return false;
        }
        return true;
        */

        ###### 處理請求的跨域問題 ######
        $origin = $request->getHeaderLine('origin') ?: '*';
        $response->withHeader('Access-Control-Allow-Origin', $origin);
        $response->withHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
        $response->withHeader('Access-Control-Allow-Credentials', 'true');
        $response->withHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With, token');
        if ($request->getMethod() === 'OPTIONS') {
            $response->withStatus(\EasySwoole\Http\Message\Status::CODE_OK);
            return false;
        }
        return true;
    }
}

注意事項

若在該事件中,執行 $response->end(),則該次請求不會進入路由匹配階段。

主站蜘蛛池模板: 色在线网站免费观看 | 美国复古性xxxx | 久久这里是精品 | 四虎精品视频 | 天天夜夜狠狠 | 激情视频网站 | 精品综合久久久久久97超人该 | 蜜臀在线免费观看 | 久久这里是精品 | 精品免费久久久久久成人影院 | 美女免费视频一区二区 | 国内精品福利在线视频 | 五月欧美激激激综合网色播 | 欧美一区网站 | 久久美女福利视频 | 澳门一级毛片免费播放 | 青青色在线视频 | 久久久无码精品亚洲日韩按摩 | 久久久无码精品亚洲日韩按摩 | 久久精品网站免费观看 | 天堂在线国产 | 国产精品久久精品牛牛影视 | 免费的黄色小视频 | 国产日本韩国不卡在线视频 | 99热最新在线观看 | 女大学生沙龙室3 | 欧美亚洲国产日韩 | 国产精品视频九九九 | 一级毛片视频在线 | 久久99九九99九九精品 | 久久时间网 | 99久久亚洲| 精品国精品国产自在久国产不卡 | 大片免免费观看视频播放网站 | 97久久精品国产精品青草 | 国产综合图区 | 海贼王3d2y剧场版 | 亚洲美日韩 | 污视频网站在线免费看 | 欧美一区二区三区成人看不卡 | 国产精品porn |