Загрузка изображений в пост-запрос FastAPI вызывает 400 неверных запросов
Я хотел бы получить изображение по запросу, а затем прочитать его. Я пытаюсь сделать вот так:
import numpy as np
from PIL import Image
from fastapi import FastAPI, File, UploadFile, HTTPException, Depends
app = FastAPI()
@app.post("/predict_image")
@logger.catch
def predict_image(predict_image: UploadFile = File(...)):
logger.info('predict_image POST request performed')
try:
pil_image = np.array(Image.open(predict_image.file))
except:
raise HTTPException(
status_code=HTTP_422_UNPROCESSABLE_ENTITY, detail="Unable to process file"
)
pred = pil_image.shape
logger.info('predict_image POST request performed, shape {}'.format(pred))
return {'input_shape': pred}
Вызов почтового запроса возвращается INFO: 127.0.0.1:59364 - "POST /predict_image HTTP/1.1" 400 Bad Request
https://i.stack.imgur.com/aTkTF.png
Как это исправить?
UPD:
Пример из официального руководства возвращает такое же исключение:
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile = File(...)):
return {"filename": file.filename}
2 ответа
2020-06-17 19:55
Исправлено так:
@app.post("/predict_image/")
@logger.catch
def make_inference(file: bytes = File(...)):
try:
pil_image = np.array(Image.open(BytesIO(file)))
except:
raise HTTPException(
status_code=HTTP_422_UNPROCESSABLE_ENTITY, detail="Unable to process file"
)