全面拥抱FastApi-优雅的处理HTTPException

本文介绍了如何在FastAPI中利用HTTPException处理客户端请求错误,包括自定义异常类、重写默认异常处理及返回异常请求体。通过实例展示如何创建友好的错误提示和定制状态码,提升API开发的用户体验。

在开发接口或者服务的时候,经常会遇到需要给客户端返回异常错误 例如:

  • 用户操作权限不够
  • 参数错误
  • 请求的资源不存在..

众所周知,因客户端或调用方的原因导致出错的,返回的状态码是以 4 开头的 (400~499)

比如常见的 404 Not Found, 资源不存在...

为了直观友好的给客户端返回错误, 在 FastApi 中一般使用 HTTPException

from fastapi import FastAPI, HTTPException

app = FastAPI()

items = { "foo""The Foo Wrestlers"}


@app.get("/items/{item_id}")
async def read_item(item_id: str):
    if item_id not in items:
        raise HTTPException(status_code=404, detail="Item not found")
    return { "item": items[item_id]}

当遇到用户请求异常的时候,可以选择用 raise 将异常抛出去

抛出异常,便立即会结束本次请求,并将HTTP错误从HTTPException发送到客户端或浏览器

比如:在浏览器中输入 http://127.0.0.1:8000/items/jerry

由于 jerry 并不在 items 中,浏览器便会收到 404 以及一个 json 格式的 response

注意: 这个 json 由 FastAPI 自动处理并转换的。

自定义异常类

和 starlette 源码中处理异常一样,你也可以自定义一个异常处理类 定义的异常处理类,使用 @app.exception_handler() 支持在 FastAPI 中全局使用该异常类

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


class UnicornException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全村之希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值