gpt4 book ai didi

python - 返回 JSON 和文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:03 24 4
gpt4 key购买 nike

如何返回 JSON 响应和文件响应:

现在我这样做:

runNumber = "A0001"
response = None
try:
response = make_response("Line One\r\nLine Two\r\n")
response.headers["Content-Disposition"] = "attachment; filename=" + runNumber + ".txt"
except MyCustomException as e:
response = jsonify(error=e.value, runnumber=runNumber)
except:
raise
return(response)

但这只允许我返回 JSON 或文件。在某些情况下,我想同时返回两者。

[编辑:]我想要返回 JSON 和文件的情况是,出现有关文件内容的警告,用户在使用该文件之前应检查该警告。

如果这是不可能的,我会将警告添加到文件的内容中。

最佳答案

您不能只返回两个响应。您只能返回一个。

这意味着,如果您确实需要返回 JSON 和文件,您需要想出一个方案,让您可以在一个响应中返回这两个内容,并让客户端再次分离出文件和JSON部分。

对此没有标准。无论您提出什么,都需要仔细记录下来,以便您的客户明确处理。

您可以使用自定义 header 来存储 JSON 数据,例如:

response = make_response("Line One\r\nLine Two\r\n")
response.headers["Content-Disposition"] = "attachment; filename=" + runNumber + ".txt"
response.headers['X-Extra-Info-JSON'] = json.dumps(some_object)

或者您可以将文件内容放入 JSON 数据中。 JSON 不是二进制数据的最佳格式,您可能需要先将二进制数据编码为 Base64:

filedata = "Line One\r\nLine Two\r\n".encode('base64')
return jsonify(name=runNumber + '.txt', data=filedata)

或者您可以创建一个多部分 MIME 文档,就像 POST multipart/form-data 主体的工作方式一样。

您的选择取决于您的用例(使用您的 API 的客户端类型)和数据大小(JSON 响应中的兆字节文件数据不太可行)。

关于python - 返回 JSON 和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30548106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com