def create_upload_func(self, ns, definition, path, operation):
request_schema = definition.request_schema or Schema()
response_schema = definition.response_schema or Schema()
@self.add_route(path, operation, ns)
@wraps(definition.func)
def upload(**path_data):
request_data = load_query_string_data(request_schema)
if not request.files:
raise BadRequest("No files were uploaded")
uploads = [
temporary_upload(name, fileobj)
for name, fileobj
in request.files.items()
if not self.exclude_func(name, fileobj)
]
with nested(*uploads) as files:
response_data = definition.func(files, **merge_data(path_data, request_data))
if response_data is None:
return "", 204
return dump_response_data(response_schema, response_data, operation.value.default_code)
if definition.request_schema:
upload = qs(definition.request_schema)(upload)
if definition.response_schema:
upload = response(definition.response_schema)(upload)
return upload
评论列表
文章目录