1

因此,我在 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 文档。我无法捕捉到这个错误!我能做些什么?

4

0 回答 0