Sanic十一:Sanic类视图与合成视图

 

一、类视图

基于类的视图只是实现对请求的响应行为的类。它们提供了一种在同一端点划分不同HTTP请求类型处理的方法。可以为端点分配一个基于类的视图,而不是定义和修饰三个不同的处理程序函数(每个端点支持的请求类型对应一个处理程序函数)。

基于类的视图需继承 HTTPMethodView . 然后,可以为要支持的每个HTTP请求类型实现类方法。如果接收到没有定义方法的请求,则 405: Method not allowed 将生成响应。

注册基于类的视图,需使用 app.add_route 方法。第一个参数应该是用方法定义的类 as_view 调用,第二个应该是URL端点

 

1、url参数:如果需要任何URL参数,需在方法定义中声明,但是由于此时是几种请求方式注册到同一接口地址的,所以没有接收此参数的请求方法会报错,如,get请求接收了此路径参数,可以正常使用,但是post、put、delete没有接收此参数,当使用这些请求方式时,则会报错,所以当使用类视图且要接收路径参数时,此类视图下的手游请求方法都需要接收此参数

 

2、装饰器

当要使用装饰器时,需使用 decorators 属性来以 列表/元祖 的形式指定,

如,登录校验

 

应用到类视图中使用

对当前类视图下的所有请求生效

只使用到需要用到的请求上,此时,还需要把此方法声明为静态方法

 

3、使用url_for生成接口地址时,则需传入类名

 

二、合成视图

合成视图可以将处理程序函数移到视图类之外。
每个支持的HTTP方法的处理程序函数在源中的其他地方定义,然后使用 CompositionView.add 方法。第一个参数是要处理的HTTP方法列表(例如。 ['GET', 'POST'] ),第二个是处理函数

这样就可以既分开定义视图函数,又将这些视图函数注册到一个路由地址

 

posted @ 2021-08-08 15:26  向前走。  阅读(517)  评论(0编辑  收藏  举报