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

18。FastAPI错误处理

  18.FastAPI错误处理18.1 HTTPException
  当我们需要在FastAPI中返回错误时,可以使用HTTPException返回错误信息。HTTPException是包含了与API相关数据的Python异常,所以在程序需要raise,而不是return。 HTTPException的参数包括: status_code 状态码 detail 详细信息,可以使用能够转换为JSON格式的任何数据类型,不止于str headers 自定义响应头
  代码示例: # coding: utf-8 from fastapi import FastAPI from fastapi import HTTPException  app = FastAPI()  langs = {     "python": "Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。",     "go": "Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。" }  @app.get(path="/language/{lang_name}") def language(lang_name: str):     if lang_name not in langs:         raise HTTPException(             status_code=404,             detail={"Error": "The language not found."},             headers={"X-Error": "The language not found."}         )     return langs[lang_name]
  执行请求: curl http://127.0.0.1:8000/language/python -i HTTP/1.1 200 OK date: Tue, 01 Feb 2022 08:07:46 GMT server: uvicorn content-length: 478 content-type: application/json  "Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。"
  上面的请求是一个返回正确结果的请求。下面执行一个返回错误的请求: curl http://127.0.0.1:8000/language/c -i HTTP/1.1 404 Not Found date: Tue, 01 Feb 2022 08:08:48 GMT server: uvicorn x-error: The language not found. content-length: 46 content-type: application/json  {"detail":{"Error":"The language not found."}}18.2自定义异常处理
  在FastAPI中,可以根据用户的需求进行自定义异常的封装和处理,对于自定义异常首先需要定义一个继承自Exception的自定义异常类,然后使用 @app.exception_handler() 添加自定义异常控制器。这样就可以在路由方法中raise相应的异常进行响应。
  代码示例: # coding: utf-8 from fastapi import FastAPI from fastapi import Request from fastapi.responses import JSONResponse  class LangException(Exception):     def __init__(self, name: str):         self.name = name  app = FastAPI()  @app.exception_handler(LangException) async def lang_exception_handle(request: Request, ex: LangException):     return JSONResponse(         status_code=418,         content="Not found the language: %s" % ex.name     )  langs = {     "python": "Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。",     "go": "Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。" }  @app.get(path="/language/{lang_name}") def language(lang_name: str):     if lang_name not in langs:         raise LangException(lang_name)     return langs[lang_name]
  执行请求: curl http://127.0.0.1:8000/language/python -i HTTP/1.1 200 OK date: Tue, 01 Feb 2022 08:26:33 GMT server: uvicorn content-length: 478 content-type: application/json  "Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。"  curl http://127.0.0.1:8000/language/c -i HTTP/1.1 418 date: Tue, 01 Feb 2022 08:26:39 GMT server: uvicorn content-length: 27 content-type: application/json  "Not found the language: c"
  从以上示例可以看出,当请求http://127.0.0.1:8000/language/c时,由于找不到c语言的说明,所以触发LangException异常,该异常将被lang_exception_handle方法处理。

科创板的机会到来了吗?科创50又回到了1209,早已跌破2018年开板时的低点。两大龙头中芯国际和金山办公,均已回到前期低价区域。科创板是新板,国内没有历史参照,可以看一看比尔盖茨和纳斯达克的历史。纳斯汇总下关于安全的13款必备工具汇总下关于安全的几款必备工具1burpsuiteBurpSuite是用于攻击web应用程序的集成平台,http协议分析神器,里面包括了不少安全必备的功能,重放爆破扫描并且支持自定义电商不得以商品拆封为由拒绝7日无理由退货最高法发布网络消费纠纷案件司法解释电商不得以商品拆封为由拒绝7日无理由退货为正确审理网络消费纠纷案件,依法保护消费者合法权益,促进网络经济健康持续发展,最高人民法院审判委员会第18京东收购德邦的消息引发网友热议,本周谜底将揭晓顶端新闻河南商报首席记者吴军文图2022年3月2日,对于快递物流行业来说,是充满悬念的一天。京东收购德邦的消息此前已飞了一段时间,又有了最新进展有消息称,近日京东已经完成对德邦快递华为新机Mate40EPro5G搭载麒麟9000L今日开售,屏幕或不输三星据悉今天上午1008,华为Mate40EPro5G在华为商城开售,支持5G全网通,同时搭载了麒麟9000L处理器,8GB内存,256GB机身存储,售价6499元。一经开售,火爆市场activiti中的网关是干什么的?网关用于控制流程走向,根据功能不同可以划分为以下4种网关排他网关用来对流程中的决定进行建模,流程执行到该网关时,按照输出流的顺序逐个计算,当条件为true时,继续执行当前网关的输出算法推荐不是不可以,要有一个平衡点算法推荐不是不可以,要有一个平衡点吧,百分之几十是推荐的,剩下的是当下热点或者什么的,别你看一样,接下来的全是这样的。原来就有,只不过要自己关闭,有的还故意把设置藏在不明显处,让你降噪出色,音质优秀,PXN莱仕达SenseBudsX2降噪耳机作为一位普通上班族,空闲之余,我会拿起手机玩玩游戏,听听音乐来放松一下紧张的工作心情。相对于使用手机内置的喇叭来说,我更喜欢戴上蓝牙耳机去听歌玩游戏和看影片,不但音质有很大的提升,斯泰得乐Oskar加湿器开箱体验都说冬季的气候是比较干燥的,人的皮肤水分也容易流失,会让你加速衰老,只有湿润的空气才能保持生机盎然,所以在冬季你必须要有一台加湿器来帮你滋润皮肤,同时也促进面部细胞血液循环和新陈代哔哩哔哩2021年总净收入194亿四季度月活达2。717亿中华网财经3月3日讯,哔哩哔哩公布2021年第四季度和财年财务业绩2021财年财务业绩总净收入为194亿元人民币,较2020年增长62。手机游戏收入为人民币51亿元,较2020年增快讯丨今年两会,沈南鹏带来5份提案每经记者李蕾每经编辑肖芮冬阳春三月,全国两会即将开启。每日经济新闻获悉,作为唯一一位来自创业投资领域的全国政协委员,红杉中国创始及执行合伙人沈南鹏今年是第五次参加全国两会。今年他带
宝马老三系E46老引擎M50改装马力破千匹BMW众多直六缸引擎之中,M50即使整体设计算过时的老掉牙,不过仗着缸体材质乃是采用粗勇高强度见长的铸铁材质,大幅改造后的潜力极限,连后继新款引擎甚至是MPower标配的S性能系列奥迪R8将搭载V8动力,预计2023年发布第三代车型Audi品牌旗下的最强悍超跑R8在2006年的时候首次推出,当时搭载着4。2LV8自然进气动力,有着酷炫低趴的外型受到不少人关注,之后更推出了强大的V10动力车款,排气量来到5。2金融科技公司Brex视觉形象升级Brex成立于2017年,是一家金融服务和技术公司,总部位于美国加州旧金山。该公司最早以专门为初创企业提供企业信用卡而闻名,主要服务于创业者的需求。在短短三年内,该公司实现了显著增马自达下一代MXX动力,最快2024亮相近日有外媒指出,下一代马自达MX5将会维持燃油动力,不会转变为纯电动车。若要问全球最畅销双座敞蓬跑车是哪一辆,那肯定是马自达MX5(海外车名为Miata)。随着电动化趋势,外界也好670匹马力地表最强的V8NA引擎,科尔维特Z06发布2019年发布美国精神号科尔维特八代版本,是该车系60多年问世以来首度采MR中置后驱配置,入门Stingray款即拥有优异性能实力,其静止加速096kmh仅2。9秒成绩直接辗压上代雅马哈MT10即将进化!动力提升极速表现更好2020年YAMAHA才针对了MT09进行了大改款,换上了890c。c。的引擎,并且搭配上更全面的电控系统,车架以及造型也都有所精进,而在这之后MT07的外观也跟上了MT09的脚步动力澎湃还省油,这样的2021款天籁,搁谁谁不爱?近几年,汽车市场竞争日益激烈,消费者对汽车的要求也变得越来越高。在大家心目中,一款拥有强悍动力表现的车,才是名副其实的梦想座驾。放眼当下的汽车市场,天籁2021款凭借澎湃动力表现,上海禾赛科技携手新石器开启L4无人车自动驾驶量产新征程近期,禾赛科技与新石器无人车在上海签订战略合作协议。根据协议,新石器将批量采购禾赛科技激光雷达解决方案并投入其无人车使用。禾赛科技联合创始人兼CEO李一帆全球业务拓展副总裁卢炜,以加劲科技品牌数字化营销,如何借助数字化营销特点打造品牌?打造一个品牌,并创造出属于它的价值,这对企业品牌的前瞻性和敏锐度有极高的要求,当品牌愿意花时间钻研消费者的消费心理不断把握市场需求动向,才能够打造出符合市场需求也符合消费者的消费心加劲科技品牌数字化营销告诉你,数字化营销手段有哪些?1。SEO与SEMSEO主要是搜索引擎优化。指通过一些技术操作,让网站符合搜索引擎认为该网站是一个符合用户搜索要求的好网站,从而使该网站在相关关键词的搜索结果中获得更多展示的一种技打响品牌战,这个品牌靠的只是流量吗?有个手机品牌的推广,几乎总在小编抖音刷到半茬的时候就刷到它。它曾经在国内默默无闻到并不是很多人知道有这么一个品牌存在。但是现在它带着全新的样貌回来了!它就是一加。我就站在你面前,你