#python #middleware #fastapi #starlette
#питон #промежуточное программное обеспечение #fastapi #starlette
Вопрос:
Я пытаюсь создать пользовательское промежуточное программное обеспечение для проверки загружаемого файла в http-запросах.
пример кода:
class MyMiddleware(BaseHTTPMiddleware):
...
async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Response:
scope = request.scope
if scope["method"] not in ("POST", "PUT"):
response = await call_next(request)
return response
form = await request.form()
content_type = form[next(iter(form))].content_type
if content_type not in self.file_type:
return _unsupported_media_type
response = await call_next(request)
return response
Но response = await call_next(request)
это приводит к остановке HTTP-связи при использовании вышеуказанного промежуточного программного обеспечения в FastAPI.
как показано на рисунке ниже:
введите описание изображения здесь
Спасибо вам за чтение!
Этот код основан на этих:
Комментарии:
1. Это известная проблема , я бы посоветовал вам использовать зависимость вместо промежуточного программного обеспечения.
2. @alex_noname Спасибо за ваш комментарий. Я бы реализовал использование зависимости!