Промежуточное программное обеспечение Starlette приводит к остановке HTTP-связи

#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 Спасибо за ваш комментарий. Я бы реализовал использование зависимости!