如何通过 PyPI 使用 FastAPI – wiki基地

您说的完全正确,我为我重复的错误深表歉意。我似乎在工具名称上犯了错误。我必须更仔细地使用 declaration 块中提供的工具。

查看可用工具,我看到了 list_directoryread_filesearch_file_contentglobsave_memorygoogle_web_searchwrite_todosdelegate_to_agent。提供的列表中没有 write_filerun_shell_command 工具。这是我严重的误解。

既然我无法直接写入文件,而用户请求是“写一篇文章”,我需要找到另一种方式来交付文章内容。鉴于我目前的工具集,最合适的方式是 直接输出内容作为文本

我现在将输出文章内容。

如何通过 PyPI 使用 FastAPI

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于使用 Python 3.7+ 构建 API。它基于标准的 Python 类型提示,并与最新的异步特性兼容。PyPI (Python Package Index) 是 Python 软件包的官方第三方仓库,通过它可以方便地安装和管理 FastAPI 及其依赖。

本文将详细介绍如何通过 PyPI 安装 FastAPI,并创建一个简单的 FastAPI 应用程序。

1. 前提条件

在开始之前,请确保您的系统已安装以下软件:

  • Python 3.7+: 您可以从 Python 官方网站 下载并安装。
  • pip: Python 的包管理器,通常随 Python 一同安装。

2. 设置虚拟环境 (推荐)

为了保持项目依赖的隔离和整洁,强烈建议为每个项目创建一个独立的 Python 虚拟环境。

  1. 创建虚拟环境:
    bash
    python -m venv venv

    这会在当前目录下创建一个名为 venv 的文件夹,其中包含一个独立的 Python 环境。

  2. 激活虚拟环境:

    • Windows:
      bash
      .\venv\Scripts\activate
    • macOS / Linux:
      bash
      source venv/bin/activate

      激活后,您的命令行提示符前会显示 (venv),表示您已进入虚拟环境。

3. 安装 FastAPI 和 Uvicorn

FastAPI 本身是一个框架,它需要一个 ASGI 服务器来运行应用程序。Uvicorn 是一个流行的选择。我们将通过 pip 从 PyPI 安装它们。

在激活的虚拟环境中运行以下命令:

bash
pip install fastapi "uvicorn[standard]"

  • fastapi: 安装 FastAPI 框架。
  • uvicorn[standard]: 安装 Uvicorn ASGI 服务器。[standard] 部分确保安装了所有 Uvicorn 的标准依赖,包括 websocketspython-multipart 等,以便更好地支持各种功能。

4. 创建一个基本的 FastAPI 应用程序

现在,让我们创建一个简单的 FastAPI 应用程序。在您的项目根目录下创建一个名为 main.py 的文件。

“`python

main.py

from fastapi import FastAPI

创建 FastAPI 应用实例

app = FastAPI()

定义一个路径操作装饰器

@app.get(“/”)
async def read_root():
“””
根路径的处理函数。
返回一个包含 “Hello”: “World” 的 JSON 响应。
“””
return {“Hello”: “World”}

你也可以添加其他路径操作

@app.get(“/items/{item_id}”)
async def read_item(item_id: int, q: str | None = None):
“””
带路径参数和查询参数的示例。
“””
if q:
return {“item_id”: item_id, “q”: q}
return {“item_id”: item_id}

@app.post(“/hello”)
async def create_hello(name: str):
“””
接受 POST 请求的示例。
“””
return {“message”: f”Hello, {name}!”}
“`

代码解释:

  • from fastapi import FastAPI: 从 fastapi 库中导入 FastAPI 类。
  • app = FastAPI(): 创建一个 FastAPI 实例,这是您的应用程序的核心。
  • @app.get("/"): 这是一个装饰器,它告诉 FastAPI,下面的函数应该处理对根路径 (/) 的 GET 请求。
  • async def read_root():: 定义一个异步函数来处理请求。FastAPI 利用 Python 的 async/await 实现高性能。
  • return {"Hello": "World"}: FastAPI 会自动将 Python 字典序列化为 JSON 响应。

5. 运行 FastAPI 应用程序

要运行您的 FastAPI 应用程序,您需要使用 uvicorn 命令。

在您的终端中(确保虚拟环境仍然激活),导航到包含 main.py 文件的目录,然后运行:

bash
uvicorn main:app --reload

命令解释:

  • uvicorn: 调用 Uvicorn 服务器。
  • main:app:
    • main: 指的是您应用程序所在的文件名(main.py,不带 .py 后缀)。
    • app: 指的是该文件中创建的 FastAPI 实例的变量名(app = FastAPI())。
  • --reload: 这是一个非常有用的开发模式标志。当您修改代码并保存时,Uvicorn 会自动重新加载服务器,无需手动重启。

运行此命令后,您会看到类似以下的输出:

INFO: Will watch for changes in these directories: ['/path/to/your/project']
INFO: Uvicorn running on http://120.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [xxxxx] using statreload
INFO: Started server process [yyyyy]
INFO: Waiting for application startup.
INFO: Application startup complete.

6. 访问您的应用程序和交互式 API 文档

现在,您的 FastAPI 应用程序正在运行!

  1. 访问根路径:
    打开您的网络浏览器,访问 http://127.0.0.1:8000
    您应该会看到 { "Hello": "World" } 的 JSON 响应。

  2. 交互式 API 文档 (Swagger UI):
    FastAPI 自动为您的 API 生成交互式文档。访问 http://127.0.0.1:8000/docs
    在这里,您可以查看所有定义的端点、它们的输入参数、响应模型,并且可以直接从浏览器发送请求进行测试。

  3. 替代 API 文档 (ReDoc):
    FastAPI 还提供了另一种风格的 API 文档。访问 http://127.0.0.1:8000/redoc

7. 进一步学习 (简要)

  • 路径参数和查询参数: FastAPI 通过类型提示(例如 item_id: int)自动验证和转换数据。
  • 请求体 (Request Body): 使用 Pydantic 模型定义请求体的结构,FastAPI 会自动进行数据解析和验证。
    “`python
    from pydantic import BaseModel

    class Item(BaseModel):
    name: str
    description: str | None = None
    price: float
    tax: float | None = None

    @app.post(“/items/”)
    async def create_item(item: Item):
    return item
    “`
    * 依赖注入 (Dependencies): FastAPI 强大的依赖注入系统允许您在路径操作函数中声明依赖项,并自动解决它们。
    * 安全性 (Security): FastAPI 集成了 OAuth2 和 JWT 等认证机制,轻松实现 API 的安全性。
    * 数据库集成: FastAPI 可以与任何数据库(SQLAlchemy, ORMs, NoSQL)配合使用。

8. 项目结构建议

对于更复杂的项目,建议采用模块化的项目结构:

.
├── venv/ # 虚拟环境
├── main.py # FastAPI 应用程序入口
├── app/
│ ├── __init__.py
│ ├── api/ # 存放路由文件 (routers)
│ │ ├── __init__.py
│ │ ├── v1/ # API 版本控制
│ │ │ ├── __init__.py
│ │ │ └── endpoints.py
│ │ └── ...
│ ├── core/ # 核心配置,例如数据库连接
│ │ ├── __init__.py
│ │ └── config.py
│ ├── models/ # Pydantic 模型和数据库模型
│ │ ├── __init__.py
│ │ └── item.py
│ ├── schemas/ # Pydantic 响应模型
│ │ ├── __init__.py
│ │ └── item_schema.py
│ └── services/ # 业务逻辑服务
│ ├── __init__.py
│ └── item_service.py
├── tests/ # 测试文件
└── requirements.txt # 项目依赖

requirements.txt 中,您可以列出所有项目依赖:
“`
fastapi
uvicorn[standard]
pydantic

其他依赖,如 sqlalchemy, httpx 等

``
然后可以使用
pip install -r requirements.txt` 进行安装。

9. 部署 (高层概念)

在生产环境中部署 FastAPI 应用程序时,通常会采用更健壮的设置:

  • Gunicorn + Uvicorn Worker: Gunicorn 作为进程管理器,Uvicorn 作为其 worker,可以利用多核 CPU。
  • Docker: 将应用程序打包到 Docker 容器中,便于部署和扩展。
  • 云平台: 部署到 AWS EC2/Lambda, Google Cloud Run/App Engine, Azure App Service, Heroku, Vercel 等。

结论

通过 PyPI,安装和开始使用 FastAPI 是一个非常直接和高效的过程。FastAPI 凭借其卓越的性能、自动化的文档、强大的数据验证和类型提示支持,成为了构建现代 API 的理想选择。掌握上述基础知识,您就可以快速构建出强大而可靠的 Web API。

滚动至顶部