【问题标题】:Flask REST API Error: The view function did not return a valid responseFlask REST API 错误:视图函数未返回有效响应
【发布时间】:2019-07-28 12:22:47
【问题描述】:

在 Python 中的 Flask REST API 路由中,返回类型是 list

@app.route('/ent', methods=['POST'])
def ent():
    """Get entities for displaCy ENT visualizer."""
    json = request.get_json()
    nlp = MODELS[json['model']]
    doc = nlp(json['text'])
    return [
        {"start": ent.start_char, "end": ent.end_char, "label": ent.label_}
        for ent in doc.ents
    ]

此错误:

TypeError: The view function did not return a valid response. The return type must be a string, dict, tuple, Response instance, or WSGI callable, but it was a list.

如何让/ent 上的 API 路由正确返回 JSON 数组?

【问题讨论】:

  • 您不能将列表更改为像元组这样的可散列类型,然后将其转换回列表吗?就这么简单。

标签: python python-3.x rest flask


【解决方案1】:

您可以随时根据 Flask 的需要将列表转换为 dict,如下所示

return { "data": [
        {"start": ent.start_char, "end": ent.end_char, "label": ent.label_}
        for ent in doc.ents
    ]}

你也见过Flask REST API responding with a JSONArray吗?

【讨论】:

    【解决方案2】:

    失败的原因是 Flask 中的视图需要一个可散列的返回类型。您始终可以将返回值转换为可散列类型,即字符串、字典、元组等,然后从结果进行转换。

    return tuple([
            {"start": ent.start_char, "end": ent.end_char, "label": ent.label_}
            for ent in doc.ents
        ])
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 2018-12-07
      • 2020-01-10
      相关资源
      最近更新 更多