python fastapi swaggerUI界面,实现多文件上传时的一次异常场景记录 📅 2026/6/25 13:32:02 说是异常记录其实也是一次与AI Agent的深度交流解决的是swaggerUI界面某个输入框内容中出现了乱码问题。异常出现动作执行了如下py文件fromfastapiimportFastAPI,Fileimportuvicorn app1FastAPI()app1.post(/file)deffile_fun(f:list[bytes]File()):print(f)print(type(f))returnfif__name____main__:uvicorn.run(test:app1,hostlocalhost,port8000)切换至swagger界面就出现了这个情况一堆奇奇怪怪的乱码出现在了输入框上试图寻找原因首先我并不知道原因出在哪我也没有对应思路于是开启了第一次与Agent的对话我提示词给到了fastapi的版本信息描述了单个文件正常但多个文件出现问题的这种现象Agent给我分析了一下最终得出的结论是swaggerUI版本与fastapi当前版本不兼容让我指定swaggerUI的版本。于是我指定了。app1FastAPI(swagger_ui_parameters{swagger_js_url:https://cdn.jsdelivr.net/npm/swagger-ui-dist5.11.2/swagger-ui-bundle.js,swagger_css_url:https://cdn.jsdelivr.net/npm/swagger-ui-dist5.11.2/swagger-ui.css,})通过在线cdn的方式引入了5.11.2版本的swaggerUI。发现问题没解决。因为我并没有把截图给到agentagent此时并不知道出现异常的样子是如何如何的可能是描述需要更加详细所以我进一步具体的描述了一遍现象给agentagent给我讲述了可能出现问题的原理依旧让我升级swaggerUI的版本。因为升级了版本没有解决问题所以我把这个现状告诉了agent而且我当时怀疑是python-multipart版本的问题所以我也就这么告诉了它然而它说是有可能的所以我按照它的指示降级了python-multipart的版本它还让我执行一个curl的命令我执行了但是问题依旧存在。不过我发现agent一直在强调一个点它一直让我确认format: “binary” 是否被包裹在 “type”: “array” 里。于是我按照了上图的验证方法试图去寻找这个字段结果真的没有所以我再次向agent发出了提问agent说我抓住了关键发现没有format字段。agent告诉了我format字段的生成方fastapiagent给出了swaggerUI的判断逻辑它是与format字段息息相关的agent给了我三个方式去解决①强制添加format②自定义openAPISchema覆盖③降级fastapi版本很显然降级fastapi版本是验证问题最快的路径于是我将fastapi版本降级至0.110.0版本问题解决format字段出现但是没完我重新升回了fastapi版本至0.128.0问题依旧不出现继续寻找原因agent给出了可能的原因①uvicorn reload导致生成schema的时机错误这个错误被缓存了。并且给出了这个错误概率的可能性高达80%。时间线②pydantic v2编译缓存污染概率占15%③Open API schema懒加载的竞态条件fastapi修改了schema的生成逻辑概率占5%很显然前两个的可能性极大fastapi版本不会无缘无故修改schema的生成逻辑。而且前两个出现的问题都是某个组件在执行某个方式的过程中错误的生成逻辑被缓存了。当然agent给出了验证方法让我清除pydantic的缓存并且以noreload的方式启动uvicorn。我按照此方法重新启动uvicorn乱码问题依旧没出现因此可能就是原因一在pydantic没有完全编译好的情况下生成了schema的生成逻辑。这个逻辑被缓存至内存中。然而在降级fastapi版本的时候缓存被清除就导致了之后每次启动uvicornswaggerUI输入框对应的乱码问题都没出现。