请求(request)

request 实例包含很多参数。
(1) 请求体 body
    可以通过request 的json 、body、form 、files 获取从客户端post 提交的数据或文件(2)  上下文
   request.ctx 是存储request 相关信息的地方,通常存储服务器端通过某些验证后需要临时存储身份认证信息以及专有变量等内容。 具体内容在中间件部分介绍。

@app.middleware('request')
async def run_before_handler(request):
    #request.ctx.user = await fetech_user_by_token(request.token)

 # 官网这个语句中带有fetch,会报错
    if request.token is not None:
        #如果token存在,则根据token 在服务器端查到相应的用户,这里简化处理,直接把token作为用户名
        request.ctx.user = request.token
    else:
        request.headers['Authoriation'] = "token testtoken"
        request.ctx.user = "token testtoken"
    
@app.route("/")
async def hi_my_token_is(request):
    return text("Hi, my token is {}".format(request.ctx.user))

(3) 连接上下文 connection context
当多个请求共享一个连接时,sanic 提供一个上下文对象来允许这些请求共享状态

@app.on_request
async def count(request):
    if not hasattr(request.conn_info.ctx, 'foo'):
        request.conn_info.ctx.foo =0
    request.conn_info.ctx.foo += 1

@app.route("/")
async def count_foo(request):
    return text(f'request.conn_info.ctx.foo={request.conn_info.ctx.foo}')


每次浏览器访问时,count的值都会加1 ,说明服务器端记录着上次访问时count的状态

==============
@app.middleware('request')   与 @app.on_request()

所谓中间件就是在服务器接手请求之前或之后执行的函数。用于修改传request 或在返回response 之前

==========


(4) 路由参数  :
   路径中包含可变参数,根据参数的不同进行不同处理

(5) 请求参数 [不知道有啥用,暂置不论]
  在reques台终,通过两种属性访问请求参数
   request.args
   request.query_args

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值