幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

pythonFastapi依赖项操作

  简单絮叨一些
  前面一篇文章唠了异常处理和路径操作配置,今天主要唠下依赖项
  Fastapi中提供了依赖注入系统,怎么理解呢?
  其实就是本来我是要接收很多参数来构造对象,现在我只接收一个已经实例化的对象。
  网上很多的抽象解读,感觉看多了,都emo了,虽说上述总结的一句话比较狭义,但是并没有偏多少,主旨是存在的。
  依赖注入常用于以下场景:共享业务逻辑(复用相同的代码逻辑)共享数据库连接实现安全、验证、角色权限等
  上述场景均可以使用依赖注入,将代码重复最小化。
  依赖项
  初识依赖项
  依赖项的使用必须要导入Depends,它是Fastapi提供的专门处理依赖的importuvicornfromtypingimportOptionalfromfastapiimportFastAPIfromfastapiimportDependsappFastAPI()defcommonparameters(q:Optional〔str〕None,skip:int0,limit:int10):return{q:q,skip:skip,limit:limit}app。get(items)defreaditems(commons:dictDepends(commonparameters)):returncommonsapp。get(users)defreaduser(commons:dictDepends(commonparameters)):returncommonsifnamemain:uvicorn。run(appdependencymain:app,reloadTrue,debugTrue)
  注释信息:fromfastapiimportDepends导入依赖项commons:dictDepends(commonparameters)声明依赖项
  注意点:Depends中的参数必须是可调用对象,比如函数等。
  子依赖项
  Fastapi支持创建含子依赖项的依赖项,并且,可以按需声明任意深度的子依赖项嵌套层级。importuvicornfromtypingimportOptionalfromfastapiimportFastAPIfromfastapiimportDependsfromfastapiimportCookieappFastAPI()defparentparameters(q:Optional〔str〕None):returnqdefchildparameters(q:strDepends(parentparameters),lastquery:Optional〔str〕Cookie(None)):ifnotq:returnlastqueryreturnqapp。get(default)defreaddefault(queryordefault:strDepends(childparameters)):return{qorcookie:queryordefault}app。get(defaultmore)defreaddefaultmore(queryordefault:strDepends(childparameters,usecacheFalse)):return{qorcookie:queryordefault}ifnamemain:uvicorn。run(appdependencymain:app,reloadTrue,debugTrue)
  注释信息:parentparameters函数就是返回一个qchildparameters函数是根据q是否传参数,然后返回对应信息queryordefault:strDepends(childparameters)声明依赖项usecacheFalse如果不想使用缓存值,而是为需要在同一请求的每一步操作(多次)中都实际调用依赖项,可以把Depends的参数usecache的值设置为False
  注意点:含子依赖项的会先处理第一层,然后再处理第二层,因为第二层依赖第一层,比如:上述例子在请求接口时会先处理parentparameters函数,然后再处理childparameters函数,因为childparameters需要parentparameters函数的返回值。
  类作为依赖项
  类作为依赖项,其实就是函数作为依赖项的升级版,那这里的类因为注入依赖系统的存在,是不需要进行实例化对象的,只需
  要把类名传入,Fastapi会自动分析是不是可调用的参数,如果是可调用的则以与路径操作函数的参数相同的方式处理它们。importuvicornfromtypingimportOptionalfromfastapiimportFastAPIfromfastapiimportDependsfromfastapiimportCookieappFastAPI()fakeitemsdb〔{itemname:Foo},{itemname:Bar},{itemname:Baz}〕classCommonParameters:definit(self,q:Optional〔str〕None,skip:int0,limit:int100):self。qqself。skipskipself。limitlimitapp。get(object)defreadobject(commons:CommonParametersDepends(CommonParameters)):response{}ifcommons。q:response。update({q:commons。q})response。update({name:lifeng})itemsfakeitemsdb〔commons。skip:commons。skipcommons。limit〕response。update({items:items})returnresponse
  注释信息:CommonParameters是定义的类,并定义了一些属性(如:self。qq等)commons:CommonParametersDepends(CommonParameters)证明依赖项,只传类名即可ifcommons。q:是判断q是否传参response。update({q:commons。q})是把q更新至response字典中fakeitemsdb〔commons。skip:commons。skipcommons。limit〕是切片取值后赋值给itemsresponse。update({items:items})是把items更新至response字典中
  注意点:commons:CommonParametersDepends(CommonParameters)也可以写成commonsDepends(CommonParameters)或者写成commons:CommonParametersDepends()
  路径操作装饰器依赖项
  1在路径操作装饰器中添加dependencies参数
  有时,我们并不需要在路径操作函数中使用依赖项的返回值。或者说,有些依赖项不返回值。那就可以在路径操作装饰器中添加一个由dependencies组成的list。
  2依赖项错误和返回值
  依赖项也可以在路径定义需求项(比如请求头),也可以抛出异常或者return返回值(无论路径装饰器依赖项是否返回值,路径操作都不会使用这些值。)importuvicornfromfastapiimportFastAPIfromfastapiimportDependsfromfastapiimportHeaderfromfastapiimportHTTPExceptionappFastAPI()defverifytoken(xtoken:strHeader(。。。)):ifxtoken!lifengtoken:raiseHTTPException(statuscode400,detailxtoken未定义!)defverifykey(xkey:strHeader(。。。)):ifxkey!lifengkey:raiseHTTPException(statuscode400,detailxkey未定义!)returnxkeyapp。get(handlepath,dependencies〔Depends(verifytoken),Depends(verifykey)〕)defreadhandlepath():return〔{item:Foo},{item:Bar}〕ifnamemain:uvicorn。run(appdependencymain:app,reloadTrue,debugTrue)
  全局依赖项
  有时,我们要为整个应用添加依赖项。那就得把依赖项添加至整个FastAPI应用。这些依赖项可以用于应用中的所有路径操作。importuvicornfromfastapiimportHeaderfromfastapiimportFastAPIfromfastapiimportDependsfromfastapiimportHTTPExceptiondefverifytoken(xtoken:strHeader(。。。)):ifxtoken!lifengtoken:raiseHTTPException(statuscode400,detailxtoken未定义!)defverifykey(xkey:strHeader(。。。)):ifxkey!lifengkey:raiseHTTPException(statuscode400,detailxkey未定义!)returnxkeyappFastAPI(dependencies〔Depends(verifytoken),Depends(verifykey)〕)app。get(itemsglobal)defreaditemsglobal():return〔{item:PortalGun},{item:Plumbus}〕app。get(usersglobal)defreadusersglobal():return〔{username:Rick},{username:Morty}〕ifnamemain:uvicorn。run(appdependenciesglobalmain:app,reloadTrue,debugTrue)
  注释信息:appFastAPI(dependencies〔Depends(verifytoken),Depends(verifykey)〕)设置全局依赖项
  今天先聊到这里吧,以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的一键3连【点赞、收藏、分享】哟,谢谢!
  未完成,待续
  一直在努力,希望你也是!
  微信搜索公众号:就用python

生儿生女都一样?等爸妈退休区别就会显现,一儿一女的家庭很糟心很多人都觉得家里只有一个孩子比较孤单,要是有两个孩子将来有事情还可以互相帮衬,所以自从开放了二胎政策,很多家庭都选择生二宝,希望两个孩子可以一起成长。老话说,有儿有女才叫……娱乐圈你想象不到的刘亦菲和黄渤的同学关系!果然娱乐是个圈明星们之间都有千丝万缕的关系,郑恺、陈赫、杜江是大学舍友,除此之外张小斐和杨幂竟然也是用班同学同舍友,一个走的喜剧路线一个走的偶像路线,不看合照真的很难发现两人竟……当柳叶刀遇上滑雪板,这群医生决定组团苦练滑雪中新社北京1月30日电题:当柳叶刀遇上滑雪板,这群医生决定组团苦练滑雪中新社记者郭超凯29日下午接受记者线上采访前,郭祁还在北京冬奥会延庆赛区进行雪上救援的日常训练……央视直播!第一中锋缺阵,郭艾伦或联手最强后卫拿下两连胜今天是11月28号,中国男篮的球员们已经在主教练杜锋的带领下对战日本男篮,在此前的两场比赛当中,我们的球员在场上表现非常出色,但是因为大部分球员都面临伤病,问题也出现了一些令球……来北京游玩不能错过的美味护国寺小吃护国寺小吃是北京地方小吃的代表之一,以其品种丰富,特色突出,具有深厚的历史文化底蕴而著称。护国寺清真京味小吃以庙会经典品种为主。主要有各种细馅元宵,清真汤圆,艾窝窝,豆面糕,芝……火箭弃4首发换来麦迪门徒布朗?5换2交易助凯尔特人队大换血?据美媒《休斯顿纪事报》透露,火箭队给凯尔特人队提供了一份5换2的交易报价,最终目的是得到凯尔特人队双探花之一的杰伦布朗,为此火箭队愿意付出伍德、戈登、小波特、泰特四名首发球员,……原神人物介绍雷电将军篇角色背景自降生之刻起,人类便会对世界抱有强烈的憧憬与好奇。此乃认知世界的锚点,构筑理智的根基。稻妻人民的世界亦是如此。那里很早就有了风雨和雷电,有了天光与大海有了雷电将军……麦迪无冠是因为我身边没有拼图即使夺冠我的人生也不会改变直播吧1月20日讯近日,NBA名宿麦迪参加了德雷蒙德格林的播客节目。谈到自己未获得NBA总冠军时,麦迪说道:我去世界上任何一个国家都能被人认出来,大家都很尊重我。赢得一个……浙江男子乘坐海盗船时发生意外游客称一股榴莲味童心未泯,岁月不老,这只是好玩者的一种期许。其实,玩心重的人,只会耽误正事,或惹是生非。哪能越玩越年轻呢?近日,有一段视频流传网络,拍摄地是浙江宁波。事发当天……韩国输掉金牌又开始作妖了中国偷韩国金牌?输急眼的韩国开始作妖了。最近当中国选手任子威在冬奥会上获得;1千米短道速滑冠军赛时,老韩坐不住了。当地的网民说:中国吹黑哨!连知名媒体也阴阳怪气的说:让中……身体疲倦乏力,有淤血?一个名方五味药,补气化瘀横扫气虚血瘀气虚还血瘀,今天教你一招补气化瘀。瘀血是现代人常见的一种问题,而血瘀体质通常被认为是肿瘤体质,所以发现自己是淤血体质一定要积极调理。而导致瘀血的原因也有很多,像受寒了会引起血瘀……当你控制不住自己的脾气的时候,很小心是肝气郁结了我们中医认为,肝这个脏器,它在五行之中属木,如果你把这种特殊的属性套换在我们自然界当中来说,那木头它是怕火的,所以你如果爱生气,就相当于是给你的肝脏添了一把火,这样对肝脏来说是……
刘恺威女友身份曝光,与杨幂还是朋友,离过婚还有个孩子近日,有网友拍摄到刘恺威和女友一起游历径山寺。当天两个人穿着打扮十分的般配,简直就是情侣装的既视感。吸引不少人的围观。该女子身材高挑,并且颜值也是很不错,看上去十分年轻。……传奇世界玩家的梦中套装蟠龙套大家好,在传奇世界当中有很多让人印象深刻的经典套装,今天咱们就来唠一下蟠龙套,一起往下看!蟠龙套究竟好不好,首先先不提他的属性,就看他全身的金光闪闪谁能拒绝金闪闪的蟠龙套呢?我……一分钟资讯努比亚联想荣耀一加华为等,最新消息头条创作挑战赛哈喽,我是毛小毛。关注我,每日带你了解最新资讯!一分钟资讯第491篇,感谢你的阅读。努比亚Z50发布努比亚正式发布了新一代旗舰机努比亚Z50,不……行脚记录仪打了谁的脸?《中国经济周刊》记者吕江涛广东潮州特斯拉失控致2死3伤事故虽然已经过去了半个月有余,但舆情仍在发酵。近日,很多特斯拉车主在短视频平台晒出给车辆安装行脚记录仪,用以记录每次……中超争冠悬念再起,沧州阻击武汉三镇成功,山东泰山仅落后4分9月24日,中超第17轮多场比赛进行。武汉三镇3比4不敌沧州雄狮,遭遇赛季首败。而同时山东泰山4比0大胜深圳队,双方分差仅为4分,中超争冠悬念再起。武汉三镇vs沧州雄狮,……高德地图在全国近360城上线绿灯导航,基于北斗系统定位能力IT之家12月29日消息,近日,高德地图宣布上线绿灯导航功能,可在用户驾车导航至某些红绿灯路段时,根据车辆当前实时位置、即将通过的红绿灯路口距离、车流量等综合信息,实时推荐建议……Lsyt年度时尚报告来袭,MiuMiu成为最大赢家?随着2022正式进入尾声,又迎来一年一度时尚行业的自我总结。在对全球两亿用户的消费行为进行分析后,时尚搜索引擎Lyst于周二发布了2022年度时尚报告。今年,打败了Cha……金风科技加快拥抱ESG助力实现双碳目标在双碳目标和高质量发展政策背景下,ESG(环境、社会和公司治理)正成为优秀企业的新标杆,成为全社会对企业价值新的评估标准。近日,金风科技副总裁兼董事会秘书马金儒分别受邀参加了中……本周四冬至,冬季养生重在藏北京日报客户端记者汪丹《黄帝内经》提到圣人不治已病治未病,不治已乱治未乱。如果疾病已经生成再来吃药,动乱已经发生再去平定,就好像口渴了才去凿井,战斗已开始才去铸兵器,为时……中消协双十一消费提示理性购买勿跟风一年一度的双十一购物节已拉开帷幕,不少消费者也已收到了第一波战利品。为保障消费者合法权益,让消费者放心消费,根据往年双十一期间投诉特点与难点,中消协提醒广大消费者,科学理性按需……百元价格千元音质HiFi性价比之王,竹林鸟惊鸿2022耳机评前言竹林鸟这个品牌挺有意思的,出品的HiFi产品价格都不高,但在声音、配件、包装上一点也不因为低价而马虎,交付给用户的产品,从声音、配件、包装上都会给人带来一个感觉,这也……广西灵川县将启动2022年广西汽车下乡惠民活动由广西壮族自治区商务厅主办,桂林市商务局、灵川县人民政府承办的2022年广西汽车下乡惠民活动桂林市灵川县汽车下乡惠百姓乡村振兴新生活汽车巡展将于11月11日11月13日在广西灵……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网