FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,由 Python 3.6+ 支持。它具有异步功能,并且与 Starlette 和 Pydantic 集成。FastAPI 的设计目标是快速开发,易于阅读和维护,同时提供高性能。
快速安装
首先,确保你的 Python 环境已经安装了 pip。然后,使用以下命令安装 FastAPI:
pip install fastapi uvicorn
快速开始
创建项目结构
创建一个新目录,用于存放你的 FastAPI 项目。然后,在该目录中创建以下文件:
main.py:你的 FastAPI 应用程序的主文件。models.py:定义你的数据模型。routers.py:定义你的路由和视图函数。
编写第一个路由
在 main.py 中,导入 FastAPI 和 Pydantic,并创建一个 FastAPI 实例:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
这段代码定义了一个基本的 GET 路由,当访问根路径时,它会返回一个 JSON 对象。
运行应用
使用以下命令运行你的 FastAPI 应用程序:
uvicorn main:app --reload
这将启动一个开发服务器,默认端口为 8000。你可以通过访问 http://127.0.0.1:8000 来查看你的 API。
数据模型
FastAPI 使用 Pydantic 来定义数据模型。在 models.py 中,你可以定义如下模型:
from pydantic import BaseModel
class Item(BaseModel):
id: int
name: str
description: str = None
price: float
tax: float = None
这个模型定义了一个名为 Item 的数据结构,它包含一个整数 id、一个字符串 name、一个可选的字符串 description、一个浮点数 price 和一个可选的浮点数 tax。
使用模型
在 main.py 中,你可以使用这个模型来定义一个路由:
from fastapi import FastAPI, Depends, HTTPException
from sqlalchemy.orm import Session
from . import models, schemas
app = FastAPI()
@app.post("/items/")
async def create_item(item: schemas.Item, db: Session = Depends(get_db)):
db_item = models.Item(**item.dict())
db.add(db_item)
db.commit()
db.refresh(db_item)
return db_item
在这个例子中,我们创建了一个 POST 路由,用于创建一个新的 Item 对象。
路由和视图函数
FastAPI 使用路由和视图函数来定义 API 的端点。在 routers.py 中,你可以定义如下路由:
from fastapi import APIRouter
router = APIRouter()
@router.get("/items/{item_id}")
async def read_item(item_id: int, db: Session = Depends(get_db)):
item = get_item_by_id(item_id, db)
if not item:
raise HTTPException(status_code=404, detail="Item not found")
return item
在这个例子中,我们定义了一个 GET 路由,用于根据 item_id 获取一个 Item 对象。
总结
FastAPI 是一个功能强大、易于使用的 Web 框架,可以帮助你快速构建高效的 RESTful API。通过使用 Pydantic 和 Starlette,FastAPI 提供了类型安全、异步处理和自动文档等功能。希望这篇文章能帮助你快速上手 FastAPI。
