数据库 - Model 前置说明
官方开源项目 抓取代理IP

介绍

SW-X的路由处理,只对HTTPWebSocketRPC服务生效。

并且,如果是WebSocket服务,则必须启用框架处理模式,自定义请求模式无效。

绑定路由

SW-X路由注册有3种方式,最常用的为PATH_INFO地址解析,
例如,现在有一个HTTP控制器/app/http/shop/Index.php,要路由访问里面的create()方法, 那么路由则为:http://IP:端口/shop/index/create。

但这种情况下会有一些开发者觉得路由太长,不够美观,在不改变文件位置跟内部代码的情况下,可以使用@RequestMapping注解路由,对路由进行二次优化:

namespace app\http\shop;
// 控制器系统基类
use x\controller\Http;

class Index extends Http
{
    /**
     * @RequestMapping(route="/test", method="get", title="我是路由定义注解")
    */
    public function create() {
        return $this->fetch('SW-X 欢迎你!');
    }
}

修改后,路由则为:http://IP:端口/test,同时只支持get请求。

路由表注册

对于不想用注解路由来进行单条路由优化的开发者,框架从v2.5.5版本起,提供了路由表注册的支持。
可以在/box/route.php文件中,使用\x\Route路由表类进行路由注册。
例如上面案例的优化注册:

use \x\Route;
Route::get('/test', 'shop/Index/create')->register();

路由声明优先级

以下顺序,越往上优先级越高,会往下覆盖合并:

  • 注解路由
  • 路由表注册
  • PATH_INFO路由

获取全站路由表

可能会有开发者有疑问,如果注解中使用了很多路由规则,那我要怎么知道都有哪些路由呢?

为了应对这个问题,SW-X提供了获取应用全路由表的方法。
具体使用方法如下:

$array = \x\route\doc\Table::route(); // 获取全部路由
$http = $array['http'];
$websokcet = $array['websokcet'];

最终返回的数组结构是个多维数组,下面是可能存在的节点:

[
    '路由地址' => [
        'n' => 命名空间地址,
        'name' => '方法名称',
        'method' => '请求类型',
        'title' => '路由描述',
        'father' => 父class的注解
        'own' => function本身的注解
    ]
]

SW-X

企业级 - 高性能 PHP 框架

最后更新:3年前 . 作者-小黄牛

本篇目录