赞
踩
在 Python 这个充满活力的生态系统中,FastAPI 应运而生,它是一个现代的、快速的 Web 框架,专注于构建 RESTful API。
无论你是一名有经验的 Python 开发人员,还是一名刚接触后端开发的新手,FastAPI 都值得一试。凭借其基于 ASGI 的异步特性、自动交互式文档、数据模型验证等优秀功能,FastAPI 让构建和维护 API 变得前所未有的高效和愉悦。
在这篇博客中,我们将一步步探索 FastAPI 的精华。从安装到项目搭建,从数据模型定义到路由处理,从中间件应用到数据库集成,无一幸免。我们还将学习如何结合 FastAPI 生态系统中的其他精彩库,打造功能丰富、高性能的 API 应用。无论你是想构建一个小巧的 API 还是开发一个复杂的企业级系统,FastAPI 都是不可多得的利器。
就让我们拥抱令人兴奋的 FastAPI,开启一段 Python Web 开发的新篇章吧!
安装 FastAPI 库,
pip install fastapi
也需要一个 ASGI 服务器,比如 Uvicorn 或 Hypercorn,用于生产环境。
pip install "uvicorn[standard]"
创建一个 main.py
文件,
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
如何想使用异步,
from typing import Union
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: Union[str, None] = None):
return {"item_id": item_id, "q": q}
运行,
uvicorn main:app --reload
关于命令
uvicorn main:app --reload
的解释如下:
main: 指的是主 Python 文件 main.py(“模块”)。
app: 指的是在 main.py 内部通过 app = FastAPI() 创建的对象。
–reload: 代码变更后重启服务器,仅在开发时使用。
打开你的浏览器,访问 http://127.0.0.1:8000/items/5?q=somequery。
你将看到以下 JSON 响应:
{"item_id": 5, "q": "somequery"}
你已经创建了一个 API,它:
/
和 /items/{item_id}
的 HTTP 请求。GET
操作 (也称为 HTTP 方法)。/items/{item_id}
有一个必须为 int
类型的 路径参数 item_id
。/items/{item_id}
有一个可选的 str
类型的 查询参数 q
。现在访问 http://127.0.0.1:8000/docs,
你会看到自动生成的交互式API文档(由Swagger UI提供):
将文件 main.py
修改为接收来自 PUT
请求的请求体。
使用 Pydantic 以标准 Python 类型声明请求体。
from typing import Union
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
price: float
is_offer: Union[bool, None] = None
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = 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}
服务器应该会自动重新加载(因为您在上面的 uvicorn
命令中添加了 --reload
)。
现在访问 http://127.0.0.1:8000/docs。
FastAPI Documentation: https://fastapi.tiangolo.com
FastAPI Source Code: https://github.com/tiangolo/fastapi
未完待续!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。