首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

全面拥抱FastApi—优雅的返回异常错误

第一时间获取 Python 技术干货!

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

用户操作权限不够

参数错误

请求的资源不存在..

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

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

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

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

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

比如:在浏览器中输入

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

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

自定义异常类

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

在路由函数中,使用该类

运行服务后,请求服务路径

在客户端就能收到一个提示友好,并事先定义好状态码 的提示错误

重写默认异常类

FastAPI 有许多的默认异常处理类

这些处理程序负责在引发 和请求包含无效数据时返回默认 响应

比如下面的路由是只支持 为 类型的路径函数

当从客户端传过来的 为非 类型的时候,便返回默认的 响应

你可以重写这些默认的异常处理类,变成自定义的。比如

重写请求验证异常类

当一个请求包含非法的请求数据时,会触发 FastAPI 中的

为了重写该异常处理类,需要导入 , 并使用 对异常处理函数进行装饰

将这部分代码,和上面的代码合并后运行。再次请求会看到不一样的提示~~~

重写 HTTPException

同样,你也可以重写 处理程序

比如你想返回文本的错误提示,而不是默认的 格式错误提示

和上面一样,使用 装饰异常处理函数即可

返回异常请求body

当接收到非法请求的时候, 中包含异常请求体的,只是没有给我们返回

但是在开发应用程序或者与前端联调的时候,可以将请求体加到返回的 中

这样在出现问题的时候,可以通过日志或响应,快速定位到问题!

我们来触发下异常,比如请求体:

对于异常请求,收到的响应中就会包含该次异常请求的请求

在联调或开发的时候,可以节省一些不必要的时间,提高效率!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201221A01ZN500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券