FastAPI按language查询仅返回单条结果,如何获取全部匹配数据?
解决FastAPI按language查询返回所有匹配结果的问题
你的问题出在循环中找到第一个匹配项就直接return,导致后续匹配的结果无法被收集返回。修改思路是先收集所有符合条件的数据,再统一返回:
修改后的代码如下:
@app.get("/data_lan") def data_lan(language: str): # 初始化空列表存储匹配结果 matched_data = [] for d in data: if data[d]["language"] == language: # 将匹配项添加到列表,而非直接返回 matched_data.append(data[d]) # 根据列表是否为空返回对应结果 return matched_data if matched_data else {"data": "NULL !!!"}
关键修改点:
- 创建
matched_data列表,用来存放所有符合条件的数据条目 - 遍历过程中,找到匹配项时执行
append操作,而非立即返回 - 遍历完成后,检查列表是否有内容:有则返回列表,无则返回空数据提示
这样访问http://127.0.0.1:8000/data_lan?language=en时,就会返回所有language为en的条目:
[ {"sn":2,"name":"B","number":"2","language":"en"}, {"sn":3,"name":"AB","number":"3","language":"en"} ]
内容的提问来源于stack exchange,提问作者jonson
相关产品推荐
相关产品推荐

