今天在写接口的时候遇到一个尴尬的现象,定义的ItemObj作为post请求体应该是一个字典(dict), 期待如下:
{
"sn": 0,
"id":0,
"name": "string"
}
first code :
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Infos(BaseModel):
sn: int = None,
id: int = None,
name: str
@app.post(path='/')
async def demo(info: Infos):
return {"msg": "wsw"}
if __name__ == '__main__':
import os
import uvicorn
name_app = os.path.splitext(os.path.basename(__file__))[0]
uvicorn.run(app=f"{name_app}:app", host="127.0.0.1", port=8066, reload=True)
一个规规矩矩的字典的要求而已, 但是实际中怎么都不是,而且格式还很诡异,前几个是列表形式,最后一个正常的了,形如下:
{
"sn": [
null
],
"id": [
null
],
"name": "string"
}
sencode code
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Infos(BaseModel):
sn: int = None
id: int = None
name: str
@app.post(path='/')
async def demo(info: Infos):
return {"msg": "wsw"}
if __name__ == '__main__':
import os
import uvicorn
name_app = os.path.splitext(os.path.basename(__file__))[0]
uvicorn.run(app=f"{name_app}:app", host="127.0.0.1", port=8066, reload=True)
对比了之前的代码感觉方式都是一样,而且也没啥复杂操作就是不行,实在是太邪门了,各种疑问在脑海浮现,哎。。。。。。 废了半天劲都没搞清楚是哪里的问题,还看了了几篇文章还是没有发现任何思路,不知道哪里来了一个feel,就是定义Infos类的时候每项后面都有一个逗号,会不会是这个看不起眼的逗号搞的鬼,下意识感觉问题只能出在这了,别的地方没有理由出错了。 现在不得不把逗号去掉,重新运行一下,果不其然还真是这里的问题,前后花费差不多耗费40分钟,各种无助的内心style太煎熬了,好在问题得到的根本性的解决,实在是太粗心了,在这里记录下
喜欢就给个关注,哈哈哈~~~~~~