FastAPI 提供了一套强大而现代的工具,用于构建高性能的 Web API。以下是一个简单的 FastAPI 用户指南,帮助你入门并理解 FastAPI 的基本用法:

1. 安装 FastAPI:

使用 pip 安装 FastAPI:
pip install fastapi

2. 安装 Uvicorn:

Uvicorn 是一个 ASGI 服务器,用于运行 FastAPI 应用。安装 Uvicorn:
pip install uvicorn

3. 创建 FastAPI 应用:

创建一个 Python 文件(例如 main.py),并使用 FastAPI 定义一个简单的应用:
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

4. 运行 FastAPI 应用:

使用 Uvicorn 运行 FastAPI 应用:
uvicorn main:app --reload

这将在 http://127.0.0.1:8000 启动应用,并提供实时重载功能。

5. 查看 API 文档:

访问 http://127.0.0.1:8000/docs 可以查看自动生成的交互式 API 文档(Swagger UI)。也可以访问 http://127.0.0.1:8000/redoc 查看 ReDoc 文档。

6. 定义路径参数和查询参数:
from fastapi import Path, Query

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = Query(..., title="Query String")):
    return {"item_id": item_id, "q": q}

在上面的例子中,item_id 是路径参数,q 是查询参数。通过访问 /items/42?q=test,可以获取相应的参数值。

7. 请求体和响应体:
from pydantic import BaseModel

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

@app.post("/items/")
def create_item(item: Item):
    return item

在这个例子中,Item 是一个 Pydantic 模型,用于验证请求体的结构。通过发送 POST 请求并传递 JSON 数据,可以创建一个新的 Item。

8. 路径操作依赖项:
from fastapi import Depends, HTTPException

def get_query(q: str = None):
    return q

def get_path(p: str, q: str = Depends(get_query)):
    if not p:
        raise HTTPException(status_code=400, detail="Path parameter is required")
    return {"p": p, "q": q}

@app.get("/items/{p}/{item_id}")
def read_item(item_id: int, common: dict = Depends(get_path)):
    return {"item_id": item_id, "common": common}

在上面的例子中,get_path 函数是一个依赖项,被 get_path 和 read_item 函数依赖。

9. 路由的组织和分割:

可以使用路由组织和分割,将应用拆分为多个文件。例如,将路由放在一个 routers 目录下,然后使用 from .routers import router 导入路由。

10. 异步请求处理:

FastAPI 支持异步请求处理,可以使用 async def 定义异步函数。例如:
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "Hello, World!"}

这是一个简单的 FastAPI 用户指南,帮助你入门并开始使用 FastAPI 构建强大的 Web API。请查阅 FastAPI 官方文档以获取更详细的信息和进一步的学习资源:[FastAPI 官方文档](https://fastapi.tiangolo.com/)。


转载请注明出处:http://www.zyzy.cn/article/detail/7358/FastAPI