FastAPI是一个现代、快速(高性能)的web框架,用于构建API。
官网: https://fastapi.tiangolo.com/
源码: https://github.com/fastapi/fastapi
安装
# 安装 FastAPI
pip install fastapi
# 安装 Uvicorn(用于运行 ASGI 服务器)
pip install uvicorn
创建一个main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
使用 Uvicorn 运行应用
uvicorn main:app --reload
# main: 指的是 main.py 文件(不需要写 .py 扩展名)。
# app: 指的是在 main.py 文件中创建的 FastAPI 实例。
# --reload: 启用自动重载,使代码更改立即生效。
打开浏览器,访问 http://127.0.0.1:8000
,将看到以下 JSON 响应:
{"Hello": "World"}
简单样例
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional
app = FastAPI()
# 定义数据模型
class Item(BaseModel):
name: str
description: str = None
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.post("/items/")
def create_item(item: Item):
return item
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
return {"item_id": item_id, "q": q}
@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
return {"item_name": item.name, "item_id": item_id}
交互式文档
FastAPI 提供了自动生成的交互式 API 文档。启动应用后,访问以下 URL:
- Swagger UI 文档:http://127.0.0.1:8000/docs
- ReDoc 文档:http://127.0.0.1:8000/redoc
直接可以在页面中测试API接口,比如发送一个 POST 请求到 /items/
,在Request body
中编辑
{
"name": "test",
"description": "test"
}
点击Execute
,可以在Responses
中看到响应结果