参数改名与传递

参数改名与传递

有时因为前端传入的参数是python的关键字等原因,dealer的参数不能与前端传入的参数一致,此时就需要进行参数改名。

lessweb将「参数」这个概念做了如下区分:

用法

使用Request的set_alias(self, realname, queryname)方法,就能实现参数改名。

示例:

from lessweb import Application, Context, interceptor

def rename(ctx:Context):
    ctx.request.set_alias('try_', 'try')
    return ctx()

@interceptor(rename)
def controller(try_:int):
    return {'try': try_}

app = Application()
app.add_get_mapping('/alias', dealer=controller)
app.run()

请求:curl "http://localhost:8080/alias?try=5"
返回:{"try": 5}

dealer间参数传递

Context的box属性是一个请求级的字典对象,可以用作在dealer间传递参数。

示例:

from lessweb import Application, Context, interceptor

def rename(ctx:Context):
    ret = []
    ctx.request.set_alias('try_', 'try')
    ret.append(ctx())
    ctx.box['try'] = 'N'
    ret.append(ctx())
    return ret

@interceptor(rename)
def controller(ctx:Context, try_:int):
    return {'try': try_, '*': ctx.box.get('try', 0)}

app = Application()
app.add_get_mapping('/alias', dealer=controller)
app.run()

请求:curl "http://localhost:8080/alias?try=5"
返回:[{"try": 5, "*": 0}, {"try": 5, "*": "N"}]