You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Swagger文档中我的FastAPI接口响应区显示422 Validation Error?

422 Validation Error 提示的产生原因

FastAPI 内置了自动参数校验逻辑,只要你的路径操作定义了带类型约束的参数(比如你这里的路径参数id声明为int类型),框架就会自动对传入的参数做类型校验:如果请求传入的id不是整数、或者没有传符合要求的参数,就会返回422校验错误。
Swagger文档里的422提示是FastAPI自动加上的,用来告知接口调用方这个错误场景的存在,和你当前的代码逻辑有没有问题无关。

为什么GET路径操作没有出现422提示

只有当GET路径操作没有定义任何需要校验的参数时,才不会出现422提示:比如你的GET接口既没有路径参数,也没有带类型声明的查询参数、请求体参数,框架没有需要执行的校验逻辑,自然就不会有对应的422错误场景,也就不会在文档里加这个提示。
如果你给GET接口也加上带类型约束的参数,文档里同样会显示422的响应说明。

为什么文档没有展示500等其他响应状态码

FastAPI的自动文档默认只会显式展示两类响应:

  • 你在路径操作装饰器里明确声明的状态码(比如你这里设置的status_code=status.HTTP_204_NO_CONTENT)
  • 框架内置的、确定会存在的校验类响应(比如422)

500属于服务端运行时异常,是代码执行过程中出现未捕获错误才会触发的不可预期场景,框架没法提前预判你写的代码会不会抛出这类错误,所以默认不会加到文档的响应列表里。如果你需要展示这类自定义的状态码,可以在路径操作装饰器的responses参数里手动声明。

另外补充个你代码里的小问题:你给delete接口设置了204状态码,HTTP协议规定204响应不允许携带响应体,所以你return的"test"实际上会被FastAPI自动丢弃,不会返回给调用方。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:45:04