FastAPI高性能 Web 框架,轻松构建高效Python API 服务
搞一个API服务真不是件容易事。要考虑性能、文档、请求校验…啥都得管。不过今天要聊的这个FastAPI框架属实让我眼前一亮,它把这些烦心事都一站式解决了。
PART01 啥是FastAPI?
FastAPI就是一个基于Python的现代Web框架。它最牛的地方在于又快又简单,关键是自带API文档,简直不要太爽!看段代码你就明白了:
from fastapi import FastAPI
app = FastAPI()
@app.get(“/”)
def hello():
return {“message”:“你好啊,铁子!”}
就这么几行代码,一个API就搞定了。直接访问/docs还能看到自动生成的API文档,简直不要太方便。
PART02 类型提示有多香
FastAPI跟其他框架最大的不同就是它重度依赖Python的类型提示。虽说写代码的时候多打几个字,但是带来的好处是真的多:
from fastapi import FastAPI
from pydantic import BaseModel
class User(BaseModel):
name:str
age:int
is_cool:bool = True # 默认值,这朋友肯定酷
app = FastAPI()
@app.post(“/users”)
def create_user(user:User):
return user
这代码看着挺简单吧?但它做了好多事:自动校验数据类型、自动生成API文档、自动转换JSON… 啥都帮你搞定了。
PART03 异步支持玩起来
FastAPI原生支持异步编程,性能杠杠的:
import asyncio
from fastapi import FastAPI
app = FastAPI()
@app.get(“/sleep”)
async def sleep():
await asyncio.sleep(1)
return {“message”:“睡醒了!”}
💡 温馨提示:别忘了运行FastAPI需要安装uvicorn,装了才能跑起来:pip install uvicorn
PART04 参数验证有多强
FastAPI的参数验证是真的强,看这操作:
from fastapi import FastAPI, Path, Query
app = FastAPI()
@app.get(“/items/{item_id}”)
def read_item(
item_id:int = Path(..., gt=0),
q:str = Query(None, max_length=50)
return {“item_id”:item_id, “q”:q}
这代码一写,参数验证就完事了。item_id必须大于0,q参数不能超过50个字符,违反规则直接报错,都不用自己写验证逻辑。
PART05 依赖注入搞起来
搞大项目的时候,依赖注入是真的好用:
from fastapi import FastAPI, Depends
def get_db():
db = “假装这是个数据库连接”
try:
yield db
finally:
print(“数据库连接关闭啦”)
app = FastAPI()
@app.get(“/db-stuff”)
def use_db(db = Depends(get_db)):
return {“db”:db}
这代码看着简单,但是处理了数据库连接的生命周期管理,懂的都懂!
PART06 中间件不能少
有时候想在所有请求处理前后都加点料,中间件就派上用场了:
from fastapi import FastAPI
mport time
app = FastAPI()
@app.middleware(“http”)
async def add_process_time_header(request, call_next):
start_time = time.time()
response = await call_next(request)
process_time = time.time() - start_time
response.headers[“X-Process-Time”] = str(process_time)
return response
这下每个响应都会带上处理时间,调试性能不要太方便。
写到这我才发现,FastAPI简直就是给咱们Python开发者的福音。它把那些繁琐的事情都处理了,让我们能专注于业务逻辑。代码写得快,运行得也快,文档还齐全,属实是个不可多得的好框架。
记住启动FastAPI项目的命令:uvicorn main:app --reload,项目就能跑起来了。默认情况下访问http://127.0.0.1:8000/docs就能看到自动生成的API文档,够直观!
来源:清莳 清莳之月