1.函数依赖注入简单示例
from typing import Optional
import uvicorn
from fastapi import FastAPI, Depends
async def common_parameters(q: Optional[str] = None, page: int = 0, limit: int = 10):
return {"query": q, "page": page, "limit": limit}
@app.get('/dependency')
async def dependency(common: dict = Depends(common_parameters)):
print(common.get("query"))
return common
if __name__ == '__main__':
uvicorn.run('main:app', host='0.0.0.0', port=8000, reload=True,
debug=True, workers=1)
2.类依赖注入简单示例
from typing import Optional
import uvicorn
from fastapi import FastAPI, Depends
class CommonQueryParams:
def __init__(self, q: Optional[str] = None, page: int = 0, limit: int = 10):
self.query = q
self.page = page
self.limit = limit
@app.get('/dependency01')
async def dependency01(common=Depends(CommonQueryParams)):
print(common.query)
return common
3.子依赖注入简单示例
from typing import Optional
import uvicorn
from fastapi import FastAPI, Depends
app = FastAPI()
def query(q: Optional[str] = None):
return q
def sub_query(q: str = Depends(query), last_query: Optional[str] = None):
if not q:
return last_query
return q
@app.get("/sub_dependency")
async def sub_dependency(final_query: str = Depends(
sub_query,
use_cache=True
)):
return {"sub_query": final_query}
if __name__ == '__main__':
uvicorn.run('main:app', host='0.0.0.0', port=8000, reload=True,
debug=True, workers=1)
4.在路径操做中调用依赖
from typing import Optional
import uvicorn
from fastapi import FastAPI, Depends, Header, HTTPException
app = FastAPI()
async def verify_key(x_key: str = Header(...)):
if x_key != "fake-super-key":
raise HTTPException(status_code=400, detail="X-Key header invalid")
return x_key
async def verify_token(x_token: str = Header(...)):
if x_token != "fake-super-token":
raise HTTPException(status_code=400, detail="X-Token header invalid")
return x_token
@app.get("/dependency_in_path_operation", dependencies=[Depends(verify_key), Depends(verify_token)])
async def dependency_in_path_operation():
return [{"user": "user01"}, {"user": "user02"}]
if __name__ == '__main__':
uvicorn.run('main:app', host='0.0.0.0', port=8000, reload=True,
debug=True, workers=1)
5.全局依赖
from fastapi import FastAPI, Depends
app = FastAPI(
title="FastAPI Tutorial",
description="FastAPI接口文档,项目代码:https://github.com/xxxx",
version='1.0.0',
docs_url='/docs',
redoc_url='/readme_docs',
dependencies=[Depends(verify_key), Depends(verify_token)]
)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示