首页 > 编程语言 >python3的模块FastAPI,APIRouter

python3的模块FastAPI,APIRouter

时间:2023-10-13 18:13:00浏览次数:43  
标签:APIRouter get FastAPI python3 router include id 路由

FastAPI 将依赖项的值从include_router传递给路由 FastAPI

依赖项和include_router

在FastAPI中,依赖项是一种重要的机制,用于处理从请求到响应的整个过程中所需的各种依赖关系,例如数据库连接、身份验证等。依赖项可以被注入到请求处理函数中,并在执行时提供所需的值。在FastAPI中,我们可以使用Depends装饰器来定义这些依赖项。

include_router函数是FastAPI中的一种方式,用于将子路由包含到主路由中。通过include_router,我们可以将不同的路由分组,并在需要时将它们添加到主路由中。

实例1:

import uvicorn
from fastapi import FastAPI,APIRouter

router = APIRouter()
#router = APIRouter(prefix='/add')   ###prefix定义在router中
app = FastAPI()

# 绑定路由和视图函数
@app.get("/")
def index():
    return {"msg": "fastapi测试成功"}

# 异步 后面基本会用异步 速度快
@router.get("/numbers")
async def A():
    return {"msg": "we are adding numbers"}

# 同步
@router.get("/strings")
def B():
    return {"msg": "we are adding strings"}

### 动态路径 和 Flask 不同,Flask 是使用 <>,而 FastAPI 使用 {}
@router.get("/{item_id}")
def C(item_id):
    return {"msg": "we are adding {}".format({item_id})}

app.include_router(router,prefix='/add')
#app.include_router(router)     ###prefix定义在router中

if __name__ == "__main__":
    uvicorn.run(app,host="0.0.0.0",port=8000)
View Code

 

在include_router中传递依赖项的值给路由

在某些情况下,我们可能需要在include_router中访问依赖项的值,并将它们传递给子路由中的请求处理函数。为了实现这一点,我们可以使用Dependency类来注入依赖项的值,并将它们作为参数传递给请求处理函数。

实例2:

from fastapi import FastAPI,APIRouter,Depends

router = APIRouter()
app = FastAPI()

async def get_current_user():
    # 获取当前用户的逻辑
    return {"username": "Alice"}

async def get_db_connection():
    # 获取数据库连接的逻辑
    return "database_connection"

# 异步 后面基本会用异步 速度快
@router.get("/users")
async def A(current_user: dict = Depends(get_current_user)):
    return current_user

### 动态路径 和 Flask 不同,Flask 是使用 <>,而 FastAPI 使用 {}
@router.get("/{item_id}")
async def C(item_id: int, db_connection: str = Depends(get_db_connection)):
    return {"item_id": item_id, "db_connection": db_connection}

app.include_router(router,prefix='/add', dependencies=[Depends(get_current_user), Depends(get_db_connection)])

if __name__ == "__main__":
    uvicorn.run(app,host="0.0.0.0",port=8000)
View Code

 

在上面的示例中,定义了两个依赖项函数get_current_userget_db_connection。它们分别返回当前用户的信息和数据库连接。然后,我们使用APIRouter创建一个路由器,并在该路由器中定义了两个路由,分别处理/users/me/users/{user_id}的请求。

在include_router函数中,我们将这两个依赖项函数作为dependencies参数传递给了该函数。这样,在子路由中的请求处理函数中,我们就可以直接使用这两个依赖项的值了。

例如,通过访问/users/me路由,我们可以获得当前用户的信息。而通过访问/users/{user_id}路由,我们可以获得指定用户ID的信息以及数据库连接。

这样,我们就成功地将依赖项的值从include_router传递给了路由。

标签:APIRouter,get,FastAPI,python3,router,include,id,路由
From: https://www.cnblogs.com/wushank/p/17762835.html

相关文章

  • 铅华洗尽,粉黛不施,人工智能AI基于ProPainter技术去除图片以及视频水印(Python3.10)
    视频以及图片修复技术是一项具有挑战性的AI视觉任务,它涉及在视频或者图片序列中填补缺失或损坏的区域,同时保持空间和时间的连贯性。该技术在视频补全、对象移除、视频恢复等领域有广泛应用。近年来,两种突出的方案在视频修复中崭露头角:flow-basedpropagation和spatiotemporalTran......
  • 制作python3.10镜像带gunicorn
    DockerfileFromharbor.goldwind.com/library/centos:7.9.2009ADDPython-3.10.13.tgz/dataRUNyuminstallmakexz-develpython-developenldap-develbzip2-develexpat-develgdbm-develreadline-develsqlite-develgccgcc-c++openssl-develxorg-x11-xauthzli......
  • fastapi关掉框架自带422响应文档
    app=FastAPI()defcustom_openapi():ifnotapp.openapi_schema:app.openapi_schema=get_openapi(title=app.title,version=app.version,openapi_version=app.openapi_version,description=app.desc......
  • 笨办法学Python3 习题34 访问列表的元素
    基数位置0代表 序数第一X=["a","b","c"]X[0]和X[-0] 代表X列表里的第一个数X[:]  #代表全部的列表内容X[0:1] //['a']  //位置0至位置1之前的元素X[0:2] //["a","b"] //位置0至位置2之前的元素X[-1]  //代表倒数第一个的元素hello="hellowor......
  • 笨办法学Python3 习题33 while 循环
    while循环只要循环语句中的条件布尔值为True,就会不停的执行下面的代码块命令。while循环是无边界循环,forin循环是有边界循环和if语句的相似点都是检查一个布尔表达式的真假,if语句是执行一次,while循环是执行完跳回到while顶部,如此重复,直到布尔值为假False尽量少用w......
  • 【Python】FastAPI 使用python3.6+构建API的Web框架
    现代、快速(高性能)的Web框架,用于构建基于Python的 API;基于Starlette和Pydantic库构建而成官网:https://fastapi.tiangolo.com/ 1、安装#对于生产环境,还需要一个ASGI服务器,如Uvicorn或Hypercorn#>pipinstall"uvicorn[standard]"pipinstallfastapipipi......
  • fastapi手动添加swagger文档描述
    fastapi手动添加swagger文档描述"""在正常开发过程中,fastapi会自动地将正确响应(status=200)和输入校验失败响应(status=422)添加到文档中.当有自定义的响应描述添加到文档中时,就需要我们手动添加到路径函数的:responses参数中.用户可以按照openapi的语法,将响应的描述信息添加......
  • 笨办法学Python3 习题32 循环和列表
    知识点:for i in y: #for循环开始i变量就被创建,所以不用提前创建只有在for循环里有效range(,)函数会从第一个数到最后一个之前的数,不包含最后一个数Y.append(X)将X追加到列表Y的尾部1the_count=[1,2,3,4,5]#创建3个列表变量2fr......
  • python32days
    异常元类—————————————————————————————————————————————异常就是错误发生的信号,我们需要对该信号做处理,如果不处理,往后的代码就不能执行了异常的分类 逻辑错误#是允许出现的,但是呢,编程的时候尽量避免逻辑错误的发生语法错......
  • fastapi swagger文档无法渲染问题
    由于fastapi默认使用国外的cdn获得支持swagger文档的js和css文件,所以在国内,/docs接口渲染不出来.解决方法1#在app生效之前,将生成swagger文档的方法替换掉.(在fastapi为:fastapi.openapi.docs.get_swagger_ui_html)​fromfastapiimportFastAPI,applicationsfromfa......