范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

22。FastAPI开发大型应用

  22.FastAPI开发大型应用
  在前面的代码示例中,我们都是在一个文件创建路由;在实际开发中,一般会根据需求进行模块划分,代码项目中也会根据模块进行开发,不同的模块采用不同的文件来编写程序。在FastAPI中提供了APIRouter来组织路由, 相当于Flask中的 Blueprints。 22.1 使用APIRouter创建路由
  1.导入 APIRouter  from fastapi import APIRouter
  2.使用 APIRouter 定义路由操作  router = APIRouter()
  使用 @router.get等对路由方法进行修饰即可,使用方式与FastAPI类相同。 22.2 FastAPI 主体程序
  在FastAPI主体程序中,将具有 APIRouter 的子模块导入,然后通过FastAPI类的 include_router 将路由添加到应用程序。代码示例如下:
  目录结构: main.py test     __init__.py     test.py demo     __init__.py     demo.py
  上面的目录结构中,test与demo是Python包。
  test.py # coding: utf-8 from fastapi import APIRouter  router = APIRouter()  @router.get(path="/hello1") async def hello1():     return {"hello1": "Hello APIRouter1"}
  demo.py # coding: utf-8 from fastapi import APIRouter  router = APIRouter()  @router.get(path="/hello2") async def hello1():     return {"hello2": "Hello APIRouter2"}
  main.py # coding: utf-8 from fastapi import FastAPI from test import test from demo import demo  app = FastAPI() app.include_router(test.router) app.include_router(demo.router)  @app.get(path="/") async def root():     return "Hello world"
  启动应用,然后进行请求测试: curl http://127.0.0.1:8000 "Hello world" curl http://127.0.0.1:8000/hello1 {"hello1":"Hello APIRouter1"} curl http://127.0.0.1:8000/hello2 {"hello2":"Hello APIRouter2"}22.3 APIRouter 的参数
  在实际开发中,一个文件中的路由是有相同的部分的,比如:"/test/hello1"、"/test/hello2"中,"/test"是相同的路由路径,在FastAPI中,可以通过APIRouter的参数来添加路由的前缀,而不需要在每个路由定义的时候分别去添加。APIRouter的参数: prefix 路由前缀 tags 标签 dependencies 依赖项 responses 额外的响应
  除此之外,我们有时候在不同的文件中还需要相同的路由前缀,所以,APIRouter 最好在包的初始化文件 __init__.py  中声明和定义。下面将上面的代码修改如下:
  demo__init__.py  # coding: utf-8 from fastapi import APIRouter  router = APIRouter(prefix="/demo") import demo.demo
  demo.py  # coding: utf-8 from demo import router  @router.get(path="/hello2") async def hello1():     return {"hello2": "Hello APIRouter2"}
  test__init__.py  # coding: utf-8 from fastapi import APIRouter  router = APIRouter(prefix="/test") import test.test
  test.py  # coding: utf-8 from test import router  @router.get(path="/hello1") async def hello1():     return {"hello1": "Hello APIRouter1"}
  main.py  # coding: utf-8 from fastapi import FastAPI import test import demo  app = FastAPI() app.include_router(test.router) app.include_router(demo.router)  @app.get(path="/") async def root():     return "Hello world"
  从以上代码中可以看出,对应定义的路由: curl http://127.0.0.1:8000/demo/hello2 curl http://127.0.0.1:8000/test/hello1
  运行测试: curl http://127.0.0.1:8000/test/hello1 {"hello1":"Hello APIRouter1"} curl http://127.0.0.1:8000/demo/hello2 {"hello2":"Hello APIRouter2"}
  需要注意:在包的初始化文件 __init__.py  文件中,一定要对使用了router的python文件进行import,并且import指令要放到router声明的后面,以便将使用了router的python文件编译进来。 22.4包含路由
  在FastAPI中,也可以使用FastAPI类的include_router函数的相应参数进行路由前缀的设置,当然也可以设置其他参数,这样就不必在APIRouter声明中设置参数。如将上面的代码中修改如下:
  __init__.py  中的代码修改为: from fastapi import APIRouter router = APIRouter()
  main.py # coding: utf-8 from fastapi import FastAPI import test import demo  app = FastAPI() app.include_router(test.router, prefix="/test") app.include_router(demo.router, prefix="/demo")  @app.get(path="/") async def root():     return "Hello world"
  运行结果与上面的代码是相同的。 22.5多次使用不同的 prefix 包含同一个路由器
  在FastAPI中,也可以在同一路由上使用不同的前缀来多次使用 .include_router();这样做在有些场景下可能有用,例如以不同的前缀公开同一个的 API,比方说 /api/v1 和 /api/latest;这是一个可能并不真正需要的高级用法,但万一你有需要了就能够用上。
  如:在上面的main.py中增加一行: app.include_router(demo.router, prefix="/demo2")
  这样,我们在请求 curl http://127.0.0.1:8000/demo2/hello2  也会返回与 curl http://127.0.0.1:8000/demo/hello2  相同的结果。 22.6在另一个 APIRouter 中包含一个 APIRouter
  与在 FastAPI 应用程序中包含 APIRouter 的方式相同,也可以在另一个 APIRouter 中包含 APIRouter。
  如:上面的代码中,我们在 test__init__.py  中增加一行: router.include_router(demo.router)
  这样,就可以请求: curl http://127.0.0.1:8000/test/hello2  ,返回结果: {"hello2":"Hello APIRouter2"}
  本篇主要讲述了FastAPI的APIRouter的使用方法,主要以其prefix参数以及include_router函数的prefix参数的使用来说明如何组织路由,通过组织路由来完成大型项目的开发,以便我们可以在多个文件中组织和管理软件的代码。

耳朵老是痒,是什么原因呢?我的体会是如果没有炎症等明显疾病,可以用棉签沾酒精(潮乎的那样就行,不要太多酒精,以免酒精滴伤耳膜)轻轻擦拭痒处,一段时间后如果还痒,就可能是把耳朵掏得太干净了,这种情况就忍几次痒为什么戴上助听器听得不太清楚,塞上棉花就能听清楚?您好,这和以下几个方面有关1本人的听力损失程度性质分辨能力。分辨率好点的相对来说佩戴效果要好些。2是否双耳佩戴。如果双耳听力都不好,双耳佩戴听声音会更清晰真实自然。3与所选配的助听百家号和头条到底哪个对小白友好?我用过头条号企鹅号百家号,全都已经一个多月了。想着反正作品已经有了,多投几个平台也能多份收益。但头条号一直是首选,企鹅号过原创难,单价比较低,我目前70000阅读量,总收益7大洋。你认为整天看手机能解决一切问题吗?整天看手机,不仅不能解决所有的问题,还会给我们带来很多危害。首先,眼睛长时间近距离盯着屏幕看,眼部肌肉很容易疲劳,视神经也得不到休息,极易造成视力减退。再者,看手机时间长了,卧姿或业主群里频遭邻居公开辱骂,咋维权?我从来不进业主群,不愿看那些大量的广告及有的业主发的家长里短。我是托邻居好友,告诉我一下群里与我有关的信息就行了。保留证据,起诉。不用找律师,到法院就立案,诉讼费50元,半年内一准为什么现在的音箱尺寸小但喇叭音质却很好?我玩了30多年的音响。从砖头单声道到现在的71声道家庭影院。认识到音响无止境。喇叭是音响的发声终端,所以是一套音响品质的关键环节。一般而言,喇叭(音箱)的投资应该是功放的3到5倍。安卓平板不刷机也能变Windows?向日葵智能远控鼠标体验从图上看你一定以为我真的把我的荣耀平板V7刷机成了Windows系统,或者我换了个主题?其实两者都不是,第一我没有刷机,因为跨平台刷机确实不易,需要太多专业的知识还要有DIY能力。新能源汽车补贴只是小钱,碳交易才是肥水有人说,补贴退坡,新能源车企的要过苦日子了。事实可能恰恰相反,新能源车企的肥日子即将到来。因为补贴一直都只是个配菜,最终为的是养肥碳积分这个大生意。一碳积分是对市场财富的再分配我们多款新能源新车开年集中上市高质量能源内容,点击右上角加关注1月5日,多款新能源新车同日上市。其中,2022款欧拉黑猫新推3款车型,售价6。98万8。13万元,2022款欧拉白猫新推2款车型,售价7。18万7工信部推动新能源和智能网联汽车发展1月12日,工业和信息化部装备工业一司发文总结2021年,我国汽车产销分别完成2608。2万辆和2627。5万辆,同比分别增长3。4和3。8,结束了连续3年的下降趋势,为我国工业经iPhoneXR有必要换iPhone13吗?必须换,这么cheap的手机怎么配得上你这么高大上的文科女大学生呢?必须换最新版的iPhone,外加镶钻石的,否则都显得low得一逼,与你风格格格不入。另外,全身的衣服,鞋,包包,
惊天大案!330亿元比特币被盗案突破,年轻夫妻在纽约落网!9。4万枚比特币是如何追回的?近日,一对雌雄大盗落网了,他们与如今价值高达330亿元的比特币失窃案有关。早2016年8月,一家名为Bitfinex的加密货币交易所遭到了黑客攻击,大约12万枚比特币被盗。这些比特SpringCloudEureka服务注册中心服务治理SpringCloudEurekaSpringCloudEureka是SpringCloudNetflix微服务套件中的一部分,它基于NetflixEureka做了二次封装python如何自己建包上一次我们介绍了如何自己建包,但是只能放在同一个目录下,这样操作非常不方便,所以这次我们全新升级!首先在任务栏里找到IDLE,右键后点属性,点击打开文件位置在文件位置那个文件夹里打看网上有很多人把宽带光纤WIFI一体机破解为拨号上网,这样与光纤上网有什么区别吗?作为行业人士,简单的谈一下为何网上很多人把光猫路由一体机破解,使用路由器拨号的初衷,以及光猫自己拨号上网的区别。最近两年三大运营商采购的光猫,都内置Wifi模块,并支持路由功能。而科技关于国产手机国产两字之所以加引号,是因为从某种程度上说,基本没有真正的国产手机。像电脑,因为电脑的主要部件,如CPU内存硬盘和操作系统等,都依赖国外厂商提供,所以没有国产电脑一说。手机也是如此微信推出拜年红包功能私聊红包金额随机,群聊能发直播红包北京商报讯(记者魏蔚)1月26日,微信宣布,用户将微信升级到最新版本,就可以在微信单聊对话框里体验拜年红包功能。拜年红包不能自定义金额,系统会随机选择一些吉利数字。比如2。881。利用递归函数求斐波那契值python版首先我们要了解一下什么是递归。递归法,递归法就是利用上一个或者上几个状态来求取当前状态的值(个人看法)。也可以说成函数自己调用自己的一种解决问题的策略。因此递归法通常是依托函数来实在中国市场遇冷的三星,为何在全球卖得火爆?纵观当下中国的智能手机市场,高端有苹果华为,终端有小米,荣耀,低端有OPPOViVo等,很少有三星手机的身影。而在近日新发布的数据显示,2021年第四季度的全球智能手机市场上,总出汉DM全球超安全智能新能源旗舰轿车全球首款搭载刀片电池的新能源汽车,兼具长寿命和长续航,整体采用四门轿跑式的车身设计,并通过DragonFace家族式设计语言基础上进行了升级,3。9s百公里加速,32。8米超短百公全球前10的巨头,中国占6家!国产从进口变出口,霸占48全球市场文Dong审核子扬校正知秋刚刚过去的2021年,对于中国新能源汽车的发展而言,是相当重要的一年。根据乘联会日前公布的相关数据显示2021年中国新能源汽车的零售量达到了298。9万辆Redmi102022已经在全球市场正式发布搭载HelioG88芯Redmi102022已经在全球市场正式发布,其尺寸为161。95x75。53x8。92mm,重181克。该设备拥有6。5英寸的打孔屏幕,提供全高清分辨率支持90Hz的刷新率405