靜態(tài)路由
靜態(tài)路由是直接通過 URl
映射,因此效率高,但作用也是有限的。
URL解析規(guī)則
僅支持 PATHINFO
模式的 URL
解析,且與控制器名稱(方法)保持一致,控制器搜索規(guī)則為優(yōu)先完整匹配模式
解析規(guī)則
在沒有路由干預(yù)的情況下,內(nèi)置的解析規(guī)則支持無限級(jí)嵌套目錄,如下方兩個(gè)例子所示
-
http://serverName/api/auth/login
對(duì)應(yīng)執(zhí)行的方法為
\App\HttpController\Api\Auth::login()
-
-
如果
f
為控制器名,則執(zhí)行的方法為\App\HttpController\A\B\C\D\F::index()
-
如果
f
為方法名,則執(zhí)行的方法為\App\HttpControllers\A\B\C\D::f()
-
如果最后的路徑為
index
時(shí),底層會(huì)自動(dòng)忽略,并直接調(diào)用控制器的默認(rèn)方法(也就是 index)
-
解析層級(jí)
理論上 EasySwoole
支持無限層級(jí)的 URL -> 控制器 映射,但出于系統(tǒng)效率和防止惡意 URL
訪問, 系統(tǒng)默認(rèn)為 3 級(jí),若由于業(yè)務(wù)需求,需要更多層級(jí)的 URL
映射匹配,請(qǐng)?jiān)诳蚣艹跏蓟录邢?DI
注入常量 SysConst::HTTP_CONTROLLER_MAX_DEPTH
,值為 URL 解析的最大層級(jí),注入方式如下代碼,允許 URL 最大解析至 5 層
public static function initialize()
{
\EasySwoole\Component\Di::getInstance()->set(SysConst::HTTP_CONTROLLER_MAX_DEPTH, 5);
}
特殊情況
當(dāng)控制器和方法都為 index
時(shí),可直接忽略不寫
-
如果方法為
index
,則可以忽略:
如果對(duì)應(yīng)執(zhí)行方法名為\App\HttpController\Api\User::index()
url 可直接寫 http://serverName/api/User -
如果控制器和方法都為
Index
,則可以忽略 如果對(duì)應(yīng)執(zhí)行方法名為\App\HttpController\Index::index()
url 可直接寫 http://serverName/ -
index 忽略規(guī)則理論支持無限層級(jí),根據(jù)解析層級(jí)最大進(jìn)行逐層查找
注意,EasySwoole
的 URL
路徑區(qū)分大小寫,控制器首字母支持小寫轉(zhuǎn)換