Controller

controller function

controller can be a function:

from sniper.responses import Response

def hello(request):
    return Response('hello world!')

Its first argument is request object.

BaseController class

controller can be a class

from sniper.controllers import BaseController
from sniper.responses import Response

class HelloCtrl(BaseController):
    def run(self):
        return Response('Hello world!')

The class must redefine run method. You can get the request object from self.request.

coroutine controller

controller function or the run method of controller class can be a coroutine function.

async def hello(request):
    data = await some_coroutine_function()
    return Response('data is %s' % data)

class HelloCtrl(BaseController):
    async def run(self):
        data = await some_coroutine_function()
        return Response('data is %s' % data)