在 python FastAPI 中解析数据时出错
Errror parsing data in python FastAPI
我正在学习使用 FastAPI,我在实现一个简单的 API 时一遍又一遍地遇到这个错误,我一直无法弄清楚为什么
"detail": "There was an error parsing the body"
这两个端点发生在我身上:
完整代码:Code Repository
片段:
app_v1 = FastAPI(root_path='/v1')
# JWT Token request
@app_v1.post('/token')
async def login_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
jwt_user_dict = {"username": form_data.username, "password": form_data.password}
jwt_user = JWTUser(**jwt_user_dict)
user = authenticate_user(jwt_user)
if user is None:
return HTTP_401_UNAUTHORIZED
jwt_token = create_jwt_token(user)
return {"token": jwt_token}
要求:
@app_v1.post("/user/photo")
async def update_photo(response: Response, profile_photo: bytes = File(...)):
response.headers['x-file-size'] = str(len(profile_photo))
response.set_cookie(key='cookie-api', value="test")
return {"profile photo size": len(profile_photo)}
要求:
第一个请求的问题是您应该在 form-data
中发送 username
和 password
。使用 form-data
而不是 x-www-form-urlencoded
,你应该没问题。
我看不出第二个有什么问题。您可以尝试使用 Swagger 界面,看看那里是否会发生同样的情况?
我想明白了,是因为安装 FastAPI 时没有安装 python-multipart,所以这个包缺少所有需要 multipart 的东西
安装后效果很好
谢谢
我正在学习使用 FastAPI,我在实现一个简单的 API 时一遍又一遍地遇到这个错误,我一直无法弄清楚为什么
"detail": "There was an error parsing the body"
这两个端点发生在我身上:
完整代码:Code Repository
片段:
app_v1 = FastAPI(root_path='/v1')
# JWT Token request
@app_v1.post('/token')
async def login_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
jwt_user_dict = {"username": form_data.username, "password": form_data.password}
jwt_user = JWTUser(**jwt_user_dict)
user = authenticate_user(jwt_user)
if user is None:
return HTTP_401_UNAUTHORIZED
jwt_token = create_jwt_token(user)
return {"token": jwt_token}
要求:
@app_v1.post("/user/photo")
async def update_photo(response: Response, profile_photo: bytes = File(...)):
response.headers['x-file-size'] = str(len(profile_photo))
response.set_cookie(key='cookie-api', value="test")
return {"profile photo size": len(profile_photo)}
要求:
第一个请求的问题是您应该在 form-data
中发送 username
和 password
。使用 form-data
而不是 x-www-form-urlencoded
,你应该没问题。
我看不出第二个有什么问题。您可以尝试使用 Swagger 界面,看看那里是否会发生同样的情况?
我想明白了,是因为安装 FastAPI 时没有安装 python-multipart,所以这个包缺少所有需要 multipart 的东西
安装后效果很好
谢谢