我正在尝试使用FastAPI和MongoDB创建一个仅具有GET
方法的API,但我不知道如何执行此操作。我的应用程序已经使用转换为csv的txt文件为MongoDB填充了巨大的数据库,其中包括MONGODB集合上的所有数据,而我想做的是:在端点路由中提供邮政编码(例如localhost:8000/cep/123456789
),我的应用程序将返回来自我的MongoDB集合的所有信息,这些信息是该邮政编码(例如街道,城市)的一部分。
@app.get('/cep/{cep}')
def find_ceps():
mongo_uri = pymongo.MongoClient("mongodb://root:example@localhost:27017/")
db_name = mongo_uri["cep4free"]
col = db_name["cep4free"]
for i in col.find({}):
return i
cep = find_ceps()
return cep
我试图这样做,但是它不起作用,我也不知道如何使用GET
方法返回此值。我也是Python和FastAPI的新手,我正在编写此API以便进行实践和学习。如果有人可以帮忙,我会很高兴。
谢谢!
您需要做的第一件事是将数据库初始化与实际路由分开。 FastAPI显示example of how to do that,只需将Couch初始化行替换为您所需的Mongo。
第二,您(通常)将有一个database
文件夹,其中包含您将在路线中使用的代码。这是layered architecture approach的一部分。在这里,您可以定义一个架构,或者只从cep_db.findAll()
之类的类中调用一个方法。
最后,请参见此项目https://github.com/markqiu/fastapi-mongodb-realworld-example-app以获取工作示例。