fastapi HTTP异常处理

news/2024/9/17 21:30:35/文章来源:https://www.cnblogs.com/shenh/p/18362995

HTTPException是FastAPI中用于处理HTTP错误的异常类。HTTPException 是一个非常有用的异常类,用于当HTTP请求处理过程中遇到错误时,能够优雅地返回HTTP错误响应给客户端。通过抛出 HTTPException,你可以控制返回给客户端的HTTP状态码和响应体,使得客户端能够根据这些信息作出相应的处理。

一、简单用法

from fastapi import APIRouter,HTTPException@user.get('/book')
async def boot():raise HTTPException(status_code=500,detail='this is a test')# 客户端调用输出:
# 状态码status_code:500
# body:{"detail":"this is a test"}

 

二、自定义异常

2.1、exception/excepts.py 自定义HTTP异常处理

from fastapi import HTTPException
from typing import Anyclass BaseException(HTTPException):status_code = 500detail = '服务器异常'data = Nonedef __init__(self,**kwargs:Any):super().__init__(self.status_code,self.detail)self.status_code = kwargs.get('status_code', self.status_code)self.detail = kwargs.get('detail',self.detail)self.data = kwargs.get('data', self.data)class Failed(BaseException):status_code = 500detail = '服务器异常'data = Noneclass UnAuthentication(BaseException):status_code = 401detail = 'Authentication Failed'

 

2.2、exception/__init__.py 全局异常处理

from fastapi.responses import JSONResponseasync def exception_user(request, exc):return JSONResponse({'code':exc.status_code,'message':exc.detail,'data':exc.data},status_code=exc.status_code) # 状态码

 

2.3、main.py 使用 add_exception_handler 方法添加到app实例

from fastapi import FastAPI,Request,HTTPException
from exception import exception_userapp = FastAPI()
# 添加到app
app.add_exception_handler(HTTPException, exception_user)

 

2.4、raise 自定义HTTP异常

from fastapi import APIRouter,Depends
from exception.excepts import Failed
from plugin.pulgin_sqlalchamy import db
from sqlalchemy.orm import Session
from models.cms.user import Useruser = APIRouter()def get_db():try:yield dbfinally:db.close()@user.post('/dev')
async def dev(data:dict,db: Session = Depends(get_db)):user = db.query(User).filter_by(username = data['username'],password = data['password']).first()if not user:raise Failed(detail= '用户不存在')return user# 调用dev接口
# 状态码status_code: 500
# body:{"code":500,"message":"用户不存在","data":null}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/795390.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Invicti v24.9.0 发布下载,新增功能概览

Invicti v24.9.0 发布下载,新增功能概览Invicti v24.9.0 for Windows - Web 应用程序安全测试 Invicti Standard v24.9.0 – 10 Sep 2024 请访问原文链接:https://sysin.org/blog/invicti/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.orgInvicti 是一种自动化…

Parallels Desktop 20 发布下载,macOS Sequoia 和 Windows 11 24H2 支持准备就绪

Parallels Desktop 20 发布下载,macOS Sequoia 和 Windows 11 24H2 支持准备就绪Parallels Desktop for Mac 20.0.0 (build 55653) - 在 Mac 上运行 Windows macOS Sequoia 和 Windows 11 24H2 支持准备就绪 请访问原文链接:https://sysin.org/blog/parallels-desktop/,查看…

rsync 学习笔记(一)编译

一、背景rsync二进制程序依赖外部库,由于安全问题,有时会单独升级依赖的外部库。另外为了防止因为栈溢出攻击导致服务器被黑,需要对rsync及其依赖的外部库重新编译,开启安全编译选项,增加黑客破解的复杂度。所有的库编译必须要求加上如下编译选项:栈保护(-fstack-protect…

Go runtime 调度器精讲(一):Go 程序初始化

原创文章,欢迎转载,转载请注明出处,谢谢。0. 前言 本系列将介绍 Go runtime 调度器。要学好 Go 语言,runtime 运行时是绕不过去的,它相当于一层“操作系统”对我们的程序做“各种类型”的处理。其中,调度器作为运行时的核心,是必须要了解的内容。本系列会结合 Go plan9 …

煤矿皮带跑偏监测识别系统

煤矿皮带跑偏监测识别系统对皮带状况进行实时监测,不用手动控制。一旦监测到皮带跑偏或者其他异常情况时,应该马上开展警报,通知监督管理办公室,并提醒负责人及时处置,并把警报截屏和视频储存到数据库系统系统中生成表格。煤矿皮带跑偏监测识别系统根据时间段对告警记录和…

GIS建库软件:地理信息与遥感领域的数据基石

在地理信息与遥感科学的浩瀚星海中,建库软件是构筑数据宇宙的基石,它不仅承载着海量地理空间数据,更是连接信息与应用的桥梁。本文将从其定义、关键技术、应用场景及未来发展四个方面,深入剖析建库软件如何支撑并推动整个行业的发展。建库软件:数据海洋的港湾建库软件,顾…

mysql月份前后格式变化记录

select DATE_FORMAT(2024-10-11 - INTERVAL 1 MONTH,%Y-%m) 一, DATE_FORMAT(2024-10-11,%Y-%m) 二, DATE_ADD(2024-10-11, INTERVAL 1 MONTH) 三 ,DATE_FORMAT(DATE_ADD(2024-10-11, INTERVAL 1 MONTH) ,%Y-%m) 四,REPLACE(DATE_FORMAT(DATE_ADD(2024-10-11, INTERVAL 1 MONT…

煤矿皮带撕裂检测系统

煤矿皮带撕裂检测系统可以全天候监管皮带的运送的工作情况,当煤矿皮带撕裂检测系统监管皮带撕裂时,马上停止皮带的运送,精准定位到皮带的裂开部位,工作员能够及时到现场维护保养。及时发现皮带撕裂,能够减少安全事故带来的损失,能够有效提升皮带机生产运输过程的效率。煤…

GIS数据采集软件:地理信息与遥感技术的智慧之眼

在信息时代,数据如同血液,滋养着各行各业的创新与进步,而地理信息与遥感领域中的数据采集软件,正是这股生命之源,它不仅为科学研究、城市规划、环境保护、灾害监测、资源管理等提供了精确数据支持,更是智慧城市建设的基石。本文将深入探讨其技术发展、应用及未来趋势,为…

工地反光衣穿戴识别

工地反光衣穿戴识别系统依据现场监控摄像头采集的视频图像,应用最新的神经网络算法,检测到一些人不穿反光衣服时,前端抓拍设备实时上传视频流至系统服务器,然后实时读取视频流并进行语音报警广播。工地反光衣穿戴识别系统的另一个闪光点是能够应用现有的监控摄像机,实时监…

深入理解DocumentFragment -文档片段

什么是文档片段? (MDN解释:)DocumentFragment,文档片段接口,一个没有父对象的最小文档对象。它被作为一个轻量版的 Document 使用,就像标准的document一样,存储由节点(nodes)组成的文档结构。 作用是什么 与document相比,最大的区别是DocumentFragment 不是真实 DOM…

LeetCode Hot100刷题记录-141.环形链表

给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅…