#python #flask #swagger #connexion
#python #flask #развязность #подключение
Вопрос:
Итак, у меня есть следующая функция просмотра в connexion (я пытаюсь работать над открытым проектом 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
Теперь по какой-то причине, если я даю пустое значение поля json через swagger, код прерывается в строке, которая имеет цикл for for line in json_data["res"][0]["lines"]
. Но если она прерывается, она должна перейти в строку except и мирно вернуть return_dict . Но то, что она возвращает мне, — это ошибка 500 в swagger.
ВЫВОД SWAGGER:
{
"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
Я перепробовал много мест, спецификации open apiv3, документацию swagger и документацию connexion. Я не могу просто поймать эту ошибку! Что я могу сделать?
Комментарии:
1. Что именно находится в dict return_dict ? Я считаю, что исключение происходит из-за сбоя Flask / Connexion при попытке сериализовать return_dict как JSON. Похоже, вы помещаете объект исключения в dict. Для начала поместите в dict только простые строковые ключи и значения.