基于类的视图只是实现对请求响应行为的类,他们提供了一种在同一端点上划分不同HTTP请求类型的处理方式。不是定义和装饰三个不同的处理函数,而是为每个端点支持的请求类型分配一个处理函数,可以为端点分配一个基于类的视图。
定义视图
基于类的视图应该是子类HTTPMethodView
,关于HTTPMethodView
的简单用法在前面的博文中有简单的提到过。我们可以自定义一个类继承于HTTPMethodView
,然后你可以在其中定义各种HTTP请求类型实施方法,如果接收到一个没有定义方法的请求,那么将会产生一个响应:405:Method not allowed
。
要在端点上注册基于类的视图,除了需要定义一个类来继承HTTPMethodView
,那是不够的,还需要调用app.add_route()
方法来进行注册。可用的方法包括:get
、post
、put
、patch
和delete
。使用所有方法的类将如下所示:
from sanic import Sanic
from sanic.views import HTTPMethodView
from sanic.response import text
class SanicView(HTTPMethodView):
def get(self,request):
return text("it is get")
def post