路由

Sanic_Routing型号

class sanic_routing.route.Route(router, raw_path, name, handler, methods, requirements=None, strict=False, unquote=False, static=False, regex=False, overloaded=False)
parse_parameter_string(parameter_string)

将参数字符串解析为其组成名称、类型和模式

例如::

parse_parameter_string('<param_one:[A-z]>')` ->
    ('param_one', '[A-z]', <class 'str'>, '[A-z]')
参数:

parameter_string (str) -- 解析字符串

返回:

包含的元组(参数_name、参数_type、参数_pattern)

ctx

用于路由元数据的容器

extra

一个用于路由应用数据的容器

handler

路由处理程序

methods

该路由可以处理的HTTP方法

name

生成的或在路径定义中定义的路径名称

parts

小路的原始版本爆炸了(另见 segments )

path

这个 _reconstructed_ 路由标准化后的路径。不包含前述内容 / (另见 uri )

pattern

的正则表达式版本 path

property raw_path

路由定义中的原始路径

regex

路径是否需要正则表达式求值

requirements

非路径路由要求的表示

property segments

相同于 parts 除非是通用的,因此任何动态部分都不包括参数键,因为它们对路由没有影响。

static

什么时候 True ,该路由不具有任何动态路径参数

strict

路线是否要配以严格评估

unquote

如果(例如)怀疑路径包含非URL友好字符,则匹配后是否应取消引号

property uri

自.以来 path 不包括前面的‘/’,这会将其添加回来。

class sanic_routing.group.RouteGroup(*routes)
merge(group, overwrite=False, append=False)

合并的目的是将具有相同路径但单独声明的路由分组。换句话说,要对这些进行分组:

@app.get("/path/to")
def handler1(...):
    ...

@app.post("/path/to")
def handler2(...):
    ...

另一个主要目的是寻找冲突并提出 RouteExists

重复路由是指:1.它们具有相同的路径和任何重叠的方法;以及2.如果它们有要求,则它们是相同的

参数:
  • group (RouteGroup) -- 传入路由组

  • overwrite (bool, optional) -- 是否允许以其他方式重复的路由组覆盖现有的 True 不会在重复项上引发异常,默认为FALSE

  • append (bool, optional) -- 是否允许以其他方式重复的路由组将其路由附加到现有路由组,默认为FALSE

抛出:

RouteExists -- 在存在重复项时引发

返回类型:

None

property depth

中的零件数 parts

parts: Tuple[str, ...]

小路的原始版本爆炸了(另见 segments )

path: str

这个 _reconstructed_ 路由标准化后的路径。不包含前述内容 / (另见 uri )

pattern: Optional[str, None]

的正则表达式版本 path

regex: bool

路径是否需要正则表达式求值

segments: Tuple[str, ...]

相同于 parts 除非是通用的,因此任何动态部分都不包括参数键,因为它们对路由没有影响。

strict: bool

路线是否要配以严格评估

unquote: bool

如果(例如)怀疑路径包含非URL友好字符,则匹配后是否应取消引号

uri: str

自.以来 path 不包括前面的‘/’,这会将其添加回来。

sanic.router

class sanic.router.Router(delimiter='/', exception=<class 'sanic_routing.exceptions.NotFound'>, method_handler_exception=<class 'sanic_routing.exceptions.NoMethod'>, route_class=<class 'sanic_routing.route.Route'>, group_class=<class 'sanic_routing.group.RouteGroup'>, stacking=False, cascade_not_found=False)

基类:sanic_routing.router.BaseRouter

负责路由的路由器实施 Request 对象绑定到相应的处理程序。

add(uri, methods, handler, host=None, strict_slashes=False, stream=False, ignore_body=False, version=None, name=None, unquote=False, static=False, version_prefix='/v', overwrite=False, error_format=None)

向路由器添加处理程序

参数:

URI(Str):路由路径。方法(可迭代 [str] ):应该附加的HTTP方法的类型,

示例: ["GET", "POST", "OPTIONS"] 。

Handler(RouteHandler):要执行的同步或异步函数。主机(可选 [str] ,可选):路由应在其上的主机。默认为无。STRICT_SLASS(bool,可选):是否应用严格斜杠。默认为False。Stream(bool,可选):是否流式处理响应。默认为False。IGNORE_BODY(bool,可选):是否应该读取传入的请求正文。

默认为False。

版本(联合 [str, float, int] ,可选):URI的版本修饰符。默认为无。名称(可选 [str] ,可选):路线的标识名称。默认为无。

返回:

路线:路线对象。

参数:
  • uri (str) --

  • methods (Iterable[str]) --

  • handler (Callable[[..], Coroutine[Any, Any, Optional[sanic.response.types.HTTPResponse, None]]]) --

  • host (Optional[Union[str, Iterable[str]]]) --

  • strict_slashes (bool) --

  • stream (bool) --

  • ignore_body (bool) --

  • version (Optional[Union[int, float, str]]) --

  • name (Optional[str, None]) --

  • unquote (bool) --

  • static (bool) --

  • version_prefix (str) --

  • overwrite (bool) --

  • error_format (Optional[str, None]) --

返回类型:

Union[sanic_routing.route.Route, List[sanic_routing.route.Route]]

finalize(*args, **kwargs)

最终确定路由器。

产生:

如果路由包含以“__”开头的参数名称且不在Allowed_Labels中,则抛出

返回类型:

None

find_route_by_view_name(view_name, name=None)

根据指定的视图名称在路由器中查找路由。

参数:

View_name(Str):要搜索名称的视图的名称(可选 [str] ,可选):路线的名称。默认为 None

返回:

任选 [Route] :路由对象

参数:
  • view_name (str) --

  • name (Optional[str, None]) --

返回类型:

Optional[sanic_routing.route.Route, None]

get(path, method, host)

检索一个 Route 对象,该对象包含有关如何处理给定请求的响应的详细信息

参数:
  • request (Request) -- 传入的请求对象

  • path (str) --

  • method (str) --

  • host (Optional[str, None]) --

返回:

处理请求和返回正确响应所需的详细信息

返回类型:

Tuple[ Route, RouteHandler, Dict[str, Any]]

参数:

路径(Str):路由方法的路径(Str):路由主机的HTTP方法(可选 [str] ):路由的主机

产生:

NotFound:如果未找到该路由,则为MethodNotAllowed:如果该方法不允许用于该路由

返回:

元组 [Route, RouteHandler, Dict[str, Any] ]:路由、处理程序和匹配信息

property routes_all

返回路由器中的所有路由。

返回:

迪克特 [Tuple[str, ...] ,路线]:路线词典

property routes_dynamic

返回路由器中的所有动态路由。

动态路由是包含路径的路由(_D) parameters._

返回:

迪克特 [Tuple[str, ...] ,路线]:路线词典

property routes_regex

返回路由器中的所有正则表达式路由。

_regex路由是包含带有regex表达式的路径参数的路由,或者需要regex来 resolve._

返回:

迪克特 [Tuple[str, ...] ,路线]:路线词典

property routes_static

返回路由器中的所有静态路由。

_在此上下文中,“静态”路由不是指 app.static() 方法。相反,它们指的是不包含任何路径的路由 parameters._

返回:

迪克特 [Tuple[str, ...] ,路线]:路线词典