首页 > 其他分享 >FastAPI学习-24.自定义异常处理器 exception_handler

FastAPI学习-24.自定义异常处理器 exception_handler

时间:2023-09-29 09:44:23浏览次数:33  
标签:24 exception name 自定义 FastAPI UnicornException handler

前言

添加自定义处理器,要使用 Starlette 的异常工具

安装自定义异常处理器

假设要触发的自定义异常叫作 UnicornException
且需要 FastAPI 实现全局处理该异常。
此时,可以用 @app.exception_handler() 添加自定义异常控制器:

from fastapi import FastAPI, Request
from fastapi.responses import JSONResponse


class UnicornException(Exception):
    def __init__(self, name: str):
        self.name = name


app = FastAPI()


@app.exception_handler(UnicornException)
async def unicorn_exception_handler(request: Request, exc: UnicornException):
    return JSONResponse(
        status_code=418,
        content={"message": f"Oops! {exc.name} did something. There goes a rainbow..."},
    )


@app.get("/unicorns/{name}")
async def read_unicorn(name: str):
    if name == "yoyo":
        raise UnicornException(name=name)
    return {"unicorn_name": name}

请求 /unicorns/yoyo 时,路径操作会触发 UnicornException
但该异常将会被 unicorn_exception_handler 处理。
接收到的错误信息清晰明了,HTTP 状态码为 418,JSON 内容如下:

{"message": "Oops! yoyo did something. There goes a rainbow..."}

from starlette.requests import Request 和 from starlette.responses import JSONResponse 也可以用于导入 Request 和 JSONResponse

FastAPI 提供了与 starlette.responses 相同的 fastapi.responses 作为快捷方式,但大部分响应操作都可以直接从 Starlette 导入。同理,Request 也是如此。

标签:24,exception,name,自定义,FastAPI,UnicornException,handler
From: https://www.cnblogs.com/yoyoketang/p/17736792.html

相关文章

  • [笔记]组成原理_2024年考纲
    一、计算机系统概述(一)计算机系统层次结构1.计算机系统的基本组成2.计算机硬件的基本结构3.计算机软件和硬件的关系4.计算机系统的工作原理“存储程序”工作方式,高级语言程序与机器语言程序之间的转换,程序和指令的执行过程。(二)计算机性能指标吞吐量、响应时间;CPU时钟周期、......
  • 2023-2024-1 20231302 《计算机基础与程序设计》第一周学习总结
    作业信息这个作业属于计算机基础与程序设计https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01作业目标快速浏览一遍教材计算机科学概论,课本每章提出至少一个自己不懂的或最想解决的问题并在期......
  • 学期2023-2024-1 学号20231309 《计算机基础与程序设计》第一周学习总结
    学期2023-2024-1学号20231309《计算机基础与程序设计》第一周学习总结作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里2023-202341计算机基础与程序设计第一周作业这个作业的目标作业正文学期2023-2024-1学号20231309《......
  • 洛谷5249
    先给出一个我自己的不那么套路的做法设p[i][j]表示一共有i个人,第j个人最终幸存的概率那么有\(p[i][j]=\)\[p_{0}*p[i-1][j-1]+(1-p_{0})*p_{0}*p[i-1][j-2]+...+(1-p_{0})^{j-2}*p_{0}*p[i-1][1](即前面j-1个人是否死进行讨论)\]\[+\]\[\]......
  • P2427 题解
    洛谷链接题目简述给定\(N\timesM\)的字符矩阵,有\(Q\)次询问,对于每次询问给出\(x,y\),求以\((x,y)\)为中心的最大正方形边长且正方形中字符均相同。思路看到数据范围较小,可以考虑深搜解决,约掉常数的时间复杂度最坏为\(O(q\times\min(n,m))\),勉强可以通过。(不过代码......
  • python exception
    exception使用exception是为了程序健壮性考虑,在程序退出的时候做好文件关闭,资源释放等工作,当然清晰的提示也是很重要。importtracebackfid=open()try:passexceptExceptionase:print(traceback.fomat_exe())#不像print(e),只打印最后出错,而是会递归的找到最......
  • 2023-2024-1 20231301 《计算机基础与程序设计》第一周学习总结
    2023-2024-120231301《计算机基础与程序设计》第一周学习总结作业信息作业链接作业课程<班级>(2023-2024-1-计算机基础与程序设计)作业要求<作业>(2023-2024-1计算机基础与程序设计第一周学习总结)作业目标<《计算机基础与程序设计》预习>《计算机基础与程序......
  • CocosCreator3.x 应用在UI(Sprite)上的 shader 要怎么利用 自定义顶点参数 来实现合批
    前言为啥要合批减少DC什么是自定义顶点参数通过几何体实例化特性(GPUInstancing)可使GPU批量绘制模型相同且材质相同的渲染对象。如果我们想在不打破这一特性的情况下单独修改某个对象的显示效果,就需要通过自定义几何体实例化属性。参考文档UI(Sprite)怎么你了?按照文......
  • k8s版本v1.24,kubectl top pod 报错:error: Metrics API not available
    k8s版本:v1.24.4kubectltoppod报错:error:MetricsAPInotavailable报错Readinessprobefailed:HTTPprobefailedwithstatuscode:500vimcustom-resources.yamlapiVersion:v1kind:ServiceAccountmetadata:labels:k8s-app:metrics-servername:metrics......
  • k8s版本v1.24,kubectl top pod 报错:error: Metrics API not available
    k8s版本:v1.24.4kubectltoppod报错:error:MetricsAPInotavailable报错Readinessprobefailed:HTTPprobefailedwithstatuscode:500vimcustom-resources.yamlapiVersion:v1kind:ServiceAccountmetadata:labels:k8s-app:metrics-servername:metrics-......