跳转到主要内容

高速路由

项目描述

自动路由

高速路由。

安装

pip install autoroutes

API

# Create a Routes instance
from autoroutes import Routes
routes = Routes()

# Register a new route
routes.add('path/to/resource/{id}', something='value', anything='else')

# Try to match a route
routes.match('path/to/resource/1234')
> ({'something': 'value', 'anything': 'else'}, {'id': '1234'})

注意:注册路由的顺序很重要。在匹配时,路由将按该顺序尝试。

占位符

占位符由一对大括号定义:path/{var}。默认情况下,这将匹配除斜杠('/')之外的任何字符。

可以通过以下方式控制占位符类型:

  • 使用命名类型: alnumdigitalphapath(匹配一切)、any(匹配一切,包括空字符串)、string(默认)

      path/to/{var:digit}
      path/to/{var:string}  # Same as path/to/{var}
    
  • 使用普通正则表达式(较慢;注意,尚不支持包含大括号的正则表达式)

      path/to/{var:\d\d\d}
    

占位符可以出现在路径的任何位置

path/to/file.{ext}
path/to/{name}.{ext}

从源代码构建

pip install cython
make compile
python setup.py develop

测试

make test

基准测试

有关详细信息,请参阅基准测试

致谢

此包最初是作为R3 C路由的Cython端口制作的。另请参阅python-r3,这是包裹R3的第一个尝试。我对稳定性不满意,对Cython更感兴趣,因此我尝试进行第一个POC端口,并对此感到满意。

支持者