我可以使用从另一个 .py 文件导入的函数在 fastapi 中创建服务吗?

Can I create a service in fastapi using an imported function from another .py file?

我在单独的文件中用 python 编写了一些函数。我的任务是使用 fastAPI 将这些功能转换为服务,服务应该 return 一个 JSON 说明操作是否正确执行(代码和消息)。

例如,我有一个文件 sum.py,里面有一个函数对两个数字求和,return 的结果是:

def sum_of_two_numbers(a,b):
    tot = a+b
    return tot

假设我想使用 fastAPI 创建一个服务,你知道我是否可以从 sum 导入 sum_of_two_numbers 并使用 TestClient 来完成这个任务而无需修改代码或重写它?

在这个例子中,函数很短,但请记住我的函数是不同的。我需要一个月的时间来编写它们并连接到 Oracle 数据库。在阅读 fastAPI 的文档时,我明白我应该修改所有语法以适应 fastAPI。

所以,简而言之,我可以通过简单地导入函数而不更改所有函数语法来使用 fastAPI 来做到这一点吗?或者你知道有没有更简单的方法?

在基本的快速api 应用程序结构中,您经常会遇到这样的情况:

例子取自 Bastien-BO/fastapi-RBAC-microservice, inspired by Kludex/fastapi-microservices and tiangolo/full-stack-fastapi-postgresql

.
├── app
│   ├── __init__.py
│   ├── main.py
│   ├── dependencies.py
│   └── routers
│   │   ├── __init__.py
│   │   ├── items.py
│   │   └── users.py
│   └── models
│   │   ├── __init__.py
│   │   ├── items.py
│   │   └── users.py
│   └── schemas
│   │   ├── __init__.py
│   │   ├── items.py
│   │   └── users.py
│   └── internal
│   │   ├── __init__.py
│   │   └── crud
|   |   |   └── user.py
|   |   |   └── item.py

通常在你的内部文件中你有函数或 类 你可以用路由来服务。

具有内部数据库函数调用的用户路由示例:

# app/routers/users.py
from app.internal.crud.user import crud_user

@router.get("/", response_model=List[UserOut])
async def read_users(offset: int = 0, limit: int = 100, session: Session = Depends(get_db)):
    users = crud_user.get_multi(session, offset=offset, limit=limit)
    return users
# app/internal/crud/user.py

def crud_user():
    #do db stuff here

在此示例中,您的 sum_of_two_numbers 函数将位于内部文件夹中,您可以将其包装在一个路由中,就像在 read_users.

中所做的那样

你应该关注 user guide or the advanced user guide (fit better to your need i believe) from fastapi official doc. Also take a look at tiangolo (fastapi creator) Base Project Generator。您将有一个很好的例子来说明如何为您的 api.

打下坚实的基础