Discuss / Python / 关于两个地方都有参数Request的疑惑

关于两个地方都有参数Request的疑惑

Topic source

看了廖老师GitHub上的源码两天了,request这个参数出现在了两个地方:

1、出现在url处理函数的fn(*arg,**kw)

2、出现在RequestHandler这个类的实例方法上__call__(self, request)

请问这两个request相同,是否都是客服端的http请求

代码在下面:

1、

def has_request_arg(fn):
    sig = inspect.signature(fn)
    params = sig.parameters
    found = False
    for name, param in params.items():
        if name == 'request':
            found = True
            continue
        if found and (param.kind != inspect.Parameter.VAR_POSITIONAL and param.kind != inspect.Parameter.KEYWORD_ONLY and param.kind != inspect.Parameter.VAR_KEYWORD):
            raise ValueError('request parameter must be the last named parameter in function: %s%s' % (fn.__name__, str(sig)))
    return found

2、

    async def __call__(self, request):
        kw = None
        if self._has_var_kw_arg or self._has_named_kw_args or self._required_kw_args:
            if request.method == 'POST':
                if not request.content_type:
                    return web.HTTPBadRequest('Missing Content-Type.')
                ct = request.content_type.lower()
                if ct.startswith('application/json'):
                    params = await request.json()
                    if not isinstance(params, dict):
                        return web.HTTPBadRequest('JSON body must be object.')
                    kw = params
         ...


  • 1

Reply