python FastAPI只显示一个查询结果

pieyvz9o  于 2023-03-21  发布在  Python
关注(0)|答案(1)|浏览(113)

我是FastAPI的新手。我有一个JSON数据集,

data = {
    1: {
    "sn":1,
    "name": "A",
    "number": "1",
    "language": "de" 
    },
    2: {
    "sn":2,
    "name": "B",
    "number": "2",
    "language": "en"
    },
    3: {
    "sn":3,
    "name": "AB",
    "number": "3",
    "language": "en"
    }
}

我使用“get”方法按“language”查询数据。但每当我使用“http://127.0.0.1:8000/data_lan?language=en“时,我只得到一个(第一个)输出。我如何得到所有匹配的结果?

@app.get("/data_lan")
def data_lan(language: str):
    for d in data:
        if data[d]["language"] == language:
            return data[d]
    return {"data": "NULL !!!"}

jgovgodb

jgovgodb1#

这是因为您在第一个匹配中返回了数据:

if data[d]["language"] == language:
    return data[d] // the function return here on first match

为了克服这个问题,您可以根据您的API创建一个数据保持器dictlist

@app.get("/data_lan")
def data_lan(language: str):
    responseData = list()
    for d in data:
        if data[d]["language"] == language:
            responseData.append(data[d])
    if responseData: // check if responseData not empty then return it
        return {"data": responseData}
    else: // else return null
        return {"data": "NULL !!!"}

相关问题