第一时间获取 Python 技术干货!
在开发接口或者服务的时候,经常会遇到需要给客户端返回异常错误例如:
用户操作权限不够
参数错误
请求的资源不存在..
众所周知,因客户端或调用方的原因导致出错的,返回的状态码是以 4 开头的 (400~499)
比如常见的404 Not Found, 资源不存在...
为了直观友好的给客户端返回错误, 在 FastApi 中一般使用
当遇到用户请求异常的时候,可以选择用 将异常抛出去
抛出异常,便立即会结束本次请求,并将错误从发送到客户端或浏览器
比如:在浏览器中输入
由于 并不在 中,浏览器便会收到 404 以及一个 格式的
注意:这个 json 由 FastAPI 自动处理并转换的。
自定义异常类
和 starlette 源码中处理异常一样,你也可以自定义一个异常处理类定义的异常处理类,使用 支持在 FastAPI 中全局使用该异常类
在路由函数中,使用该类
运行服务后,请求服务路径
在客户端就能收到一个提示友好,并事先定义好状态码 的提示错误
重写默认异常类
FastAPI 有许多的默认异常处理类
这些处理程序负责在引发 和请求包含无效数据时返回默认 响应
比如下面的路由是只支持 为 类型的路径函数
当从客户端传过来的 为非 类型的时候,便返回默认的 响应
你可以重写这些默认的异常处理类,变成自定义的。比如
重写请求验证异常类
当一个请求包含非法的请求数据时,会触发 FastAPI 中的
为了重写该异常处理类,需要导入 , 并使用 对异常处理函数进行装饰
将这部分代码,和上面的代码合并后运行。再次请求会看到不一样的提示~~~
重写 HTTPException
同样,你也可以重写 处理程序
比如你想返回文本的错误提示,而不是默认的 格式错误提示
和上面一样,使用 装饰异常处理函数即可
返回异常请求body
当接收到非法请求的时候, 中包含异常请求体的,只是没有给我们返回
但是在开发应用程序或者与前端联调的时候,可以将请求体加到返回的 中
这样在出现问题的时候,可以通过日志或响应,快速定位到问题!
我们来触发下异常,比如请求体:
对于异常请求,收到的响应中就会包含该次异常请求的请求
在联调或开发的时候,可以节省一些不必要的时间,提高效率!
领取专属 10元无门槛券
私享最新 技术干货