因此,我在 connexion 中有以下视图函数(我正在尝试处理 Open APIV3 项目):
def my_view_func_in_python():
return_dict = {"status": False, "stdout": None, "stderr": None}
try:
payload = connexion.request.get_json()
json_data = payload["json"]
fileName = payload["fileName"]
text_lines = []
for line in json_data["res"][0]["lines"]:
text_lines.append(line["text"])
text = " ".join(text_lines)
os.remove("./assets/request.jpg")
return_dict.update([
("status", True)
])
except BaseException as ex:
return_dict.update([
("stderr", ex)
])
return return_dict
现在由于某种原因,如果我通过 swagger 给出一个空的 json 字段值,则代码会在具有 for loop 的行中中断for line in json_data["res"][0]["lines"]
。但是如果它坏了,它应该进入 except 行并和平地返回 return_dict。但它返回给我的是一个 500 错误的招摇。
大摇大摆的输出:
{
"detail": "The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.",
"status": 500,
"title": "Internal Server Error",
"type": "about:blank"
}
并且,它在我托管应用程序的后端引发了什么错误:
TypeError: Object of type 'KeyError' is not JSON serializable
我尝试了很多地方,打开了 apiv3 规范、swagger 文档和 connexion 文档。我无法捕捉到这个错误!我能做些什么?