fastapi框架docs文档Responses去掉默认的异常响应422Validation Error
1.flask搭建平台实战教程一:生成数据库数据2.flask搭建平台实战教程二:快速实现用户注册和登录3.fastapi搭建平台实战教程二:快速实现用户注册和登录4.fastapi搭建平台实战教程一:生成数据库数据
5.fastapi框架docs文档Responses去掉默认的异常响应422Validation Error
6.flask搭建平台实战教程三:接口编写及权限校验(前后端分离)7.django-rest-framework搭建平台实战教程三:接口编写及权限校验(前后端分离)8.django-rest-framework搭建平台实战教程二:快速实现用户注册和登录9.django-rest-framework搭建平台实战教程一:生成数据库数据10.fastapi搭建平台实战教程三:接口编写及权限校验(前后端分离)11.fastapi搭建平台实战教程四:使用已有数据库编写api接口12.django-rest-framework搭建平台实战教程四-使用fast-crud集成后端权限功能fastapi框架原生docs的Responses中会有个默认的422Validation Error响应,但大多数实际开发应该不需要,如何去除呢?
我用的方法是用猴子补丁重写fastapi.openapi.util里的get_openapi_path方法,去掉加入默认422的那段代码即可,下面这些
http422 = str(HTTP_422_UNPROCESSABLE_ENTITY) if (all_route_params or route.body_field) and not any( status in operation["responses"] for status in [http422, "4XX", "default"] ): operation["responses"][http422] = { "description": "Validation Error", "content": { "application/json": { "schema": {"$ref": REF_PREFIX + "HTTPValidationError"} } }, } if "ValidationError" not in definitions: definitions.update( { "ValidationError": validation_error_definition, "HTTPValidationError": validation_error_response_definition, } )
新加一个自定义的方法重写
import http import inspect from typing import Dict, Set, Optional, Type, Any, List from fastapi import routing from fastapi.datastructures import DefaultPlaceholder from fastapi.dependencies.utils import get_flat_dependant, get_flat_params from fastapi.openapi.constants import METHODS_WITH_BODY, REF_PREFIX from fastapi.openapi.utils import get_openapi_path, get_openapi_operation_metadata, get_openapi_security_definitions, \ get_openapi_operation_parameters, get_openapi_operation_request_body, status_code_ranges from fastapi.utils import is_body_allowed_for_status_code, deep_dict_update from pydantic.schema import field_schema from pydantic.utils import lenient_issubclass from starlette.responses import Response, JSONResponse def my_get_openapi_path(*, route: routing.APIRoute, model_name_map: Dict[type, str], operation_ids: Set[str]): ......
使用猴子补丁
from fastapi.openapi import utils from myutils import my_get_openapi_path utils.get_openapi_path = my_get_openapi_path
再启动docs的Responses里就没有422的响应了
分类:
fastapi
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现