国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

跨域路由 重寫路由類addRoute 解決添加路由繁瑣問題

來者可追

之前由于沒好好看文檔,在跨域處理上浪費(fèi)了不少時間。
截圖

因為我是自定義路由的,又想使用標(biāo)準(zhǔn)restful api 路由,所以使用resource 配置起來比較方便,但是我發(fā)現(xiàn)加了跨域中間件后,就不能使用resource路由了。

另外由于為了不暴露某些路由 我不想使用any方法,因此每次都得addRoute 中 參數(shù)加一個OPTIONS ,比較麻煩。

因此今天重寫了一些路由類中的addRoute方法

代碼如下

<?php

namespace support;

use Webman\Route\Route as RouteObject;

class Route extends \Webman\Route
{

    public static function addRoute($methods, string $path, $callback): RouteObject
    {
        // 針對 resource 路由 會重復(fù)addRoute 要保證最終methods 中只含有一個 OPTIONS
        // 因此需要判斷當(dāng)前路由的methods中是否存在OPTIONS
        $routes = static::getRoutes();
        $has_options = false;
        foreach ($routes as $route) {
            if ($route->getPath() == $path && in_array('OPTIONS', $route->getMethods())) {
                $has_options = true;
                break;
            }
        }
        if (!$has_options) {
            // 針對只添加一次的路由,自動添加OPTIONS請求
            $methods = is_array($methods) ? $methods : [$methods];
            if (!in_array('OPTIONS', $methods)) {
                $methods[] = 'OPTIONS';
            }
        }

        return parent::addRoute($methods, $path, $callback); // TODO: Change the autogenerated stub
    }
}

目前測試一切ok~ 有同樣需求的可以copy一下,邏輯也比較簡單。

這樣定義路由的時候,直接按照get post put 等方法配置就可以了,resource 測試也是ok的!

1171 0 0
0個評論

來者可追

320
積分
0
獲贊數(shù)
0
粉絲數(shù)
2023-06-16 加入
??