handler 类型

3.3 handler 处理函数自定义属性控制

3.3.1 自定义属性

is_parse_post: 是否解析请求中 post body 中的参数,默认值:True

post_len = wsgienv.get("CONTENT_LENGTH")
wsgienv["wsgi.input"].read(post_len)

is_encode_response: 是否重新拼装 response,并自动转为 json, 默认值:False

如:
retstat.OK, {"randstr": randstr}, [(__info__, __version__)]
             |
             V
HTTP_CODE:200
HTTP_BODY:{"stat":"OK","randstr":randstr}
HTTP_HEADERS: (info, version)

3.3.2 根据 hander 特定目录定义属性(已 pass)

定义 handlers.x 开头的设置 is_parse_post, is_encode_response 为 True,True, 其他为 True,False

def autoload_handler(self, package_dir):
    """自动加载指定目录下的所有 package
    Args:
        package_dir: package dir
    """
    # 将 "handlers" 目录下的 package 自动加载,也就是 __init__.py
    results = import_submodules(package_dir)
    for package_name in results:
        # 如果 package_name 是以 {package_dir}.x 开头,则说明为简易接口函数
        if package_name.startswith("{package_dir}.x".format(package_dir=package_dir)):
            adder_args = [True, True]
        else:
            adder_args = [True, False]
        self.add_apis(
            results[package_name],
            adder_args,
            package_name=package_name)

使用特定目录定义属性在使用上不是特别方便,方案已 pass

3.3.3 使用装饰器进行自定义属性

api

api_upload

api_download(默认值)

Last updated