Проблема с возвратом файлов через FastAPI
С помощью FastAPI запускается локальный сервер, одна из функций которого должна возвращать изображение. Get запросом на сервер направляется host, port, id камеры и временная метка (datetime.timestamp).
Самый часто встречаемый ответ FastAPI:
TypeError: Failed to execute 'fetch' on 'Window': Failed to parse URL from http://127.0.0.1:8000/camera/get_screenshot
При использовании starlette.response.FileResponse ответ становится таким:
TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
Примитивно сейчас это выглядит вот так:
from fastapi import FastAPI
from starlette.response import FileResponse
app = FastAPI()
@app.get('/screenshot/')
async def get_screenshot():
...
file = FileResponse(obj.screenshot())
return file
obj - объект созданного класса, метод скриншот возвращает файл с изображением. Если возможно, подскажите где ошибка или опишите пример возврата файла через FastAPI в таком случае. Спасибо!
UPD Метод obj.screenshot()
def screenshot(self):
...
url = ...
r = requests.get(url, verify=False)
scr_name = configs.timestamp.strftime('%Y-%m-%d_%H-%M-%S')
with open(f'screenshot_{scr_name}.png', 'wb') as file:
file.write(r.content)
return file