光谷做网站推广价格,辛集做网站,网站怎么做英文版的,网站服务器租赁费用接收不到Apifox发送的from-data字符串_解决方法 问题描述解决方法弯路总结弯路描述纵观全局小结 问题描述
这里写了一个接口#xff0c;功能是上传文件#xff0c;接口参数是file文件和一个id字符串
gpt_router.post(/uploadfiles)
async def create_upload_fi… 接收不到Apifox发送的from-data字符串_解决方法 问题描述解决方法弯路总结弯路描述纵观全局小结 问题描述
这里写了一个接口功能是上传文件接口参数是file文件和一个id字符串
gpt_router.post(/uploadfiles)
async def create_upload_files(files: List[UploadFile] File(...), task_id: str None): # print(files,files)print(fTask ID: {task_id})return HttpResponse.ok(message上传成功)Apifox请求之后文件可以接收到但是接收不到id
解决方法
使用 Form 类型来接收 form-data 中的字段包括字符串。 引入一下From更改一下参数
from fastapi import Formgpt_router.post(/uploadfiles)
async def create_upload_files(files: List[UploadFile] File(...), task_id: str Form(None)): # print(files,files)print(fTask ID: {task_id})return HttpResponse.ok(message上传成功)弯路总结
弯路描述
查看Apifox请求中的请求头的时候发现content-type的值是application/json不是传的from-data类型。 于是乎在请求头中设置Content-type为multipart/form-data请求之后依然接收不到task_id同时请求头Header中content-type的值依然是application/json。奇怪喔 然后一顿搜索甚至官方文档也看了依然不行。 纵观全局
在查看Apifox官方文档的时候了解到只要请求的时候点选了数据类型请求的Content-type其实就已经更改了至于为什么请求完的Header里content-type还是application/json就不得而知了。知道为什么的大佬可以在评论区讲解一下提前致谢
所以到这里只要我点选的是from-data那么content-type就已经是multipart/form-data了所以请求没有错那可能就是后端出现的问题解决问题的方向错了。
再来看下问题同样的from-data数据文件就可以接收到而字符串不行那说明两者中文件是正确的字符串在哪里出了问题我们对比下参数部分代码。 提取一下 files: List[UploadFile] File(...) task_id: str None 不难看出是 File(...)和 None默认值的区别那就是字符串不是这么接收的或者说应该和File一样的接收格式那么具体该怎么接收from-data数据呢
查了一下发现 在 FastAPI 中要使用 Form 类型来接收 form-data 中的字段包括字符串。 心机之蛙一直摸你肚子 原来是接收方式不对这也怪鄙人python后端不熟练的原因闹了笑话见笑了。
知道原因就好办了引入一下From更改一下参数
from fastapi import Formtask_id: str Form(None)测试
完活收工
小结
解决问题所收获的的不是解决问题本身而是解决问题的过程以及其中的思路、以及无法用文字描述的东西。