Как по-другому перехватывать или обрабатывать исключения RequestValidationError в промежуточном программном обеспечении ⇐ Python
Как по-другому перехватывать или обрабатывать исключения RequestValidationError в промежуточном программном обеспечении
как правильно комбинировать функции обработки исключений RequestValidationError
@app.Exception_handler(RequestValidationError) асинхронная защита validation_Exception_handler (запрос, exc): ответ = подготовить_ответ({}, g_ERROR__INCORRECT_PARAMS) вернуть JSONResponse(содержание=ответ) и функция промежуточного программного кода
@app.middleware("http") async def response_middleware (запрос: Request, call_next): пытаться: результат = ожидание call_next (запрос) res_body = б'' асинхронность для чанка в result.body_iterator: res_body += чанк ответ = подготовить_ответ (res_body.decode(), g_ERROR__ALL_OK) кроме исключения как e: ответ = подготовить_ответ({}, g_ERROR__UNKNOWN_ERROR) вернуть JSONResponse(содержание=ответ) Необходимо, чтобы ТОЛЬКО исключение RequestValidationError запускало функцию
@app.Exception_handler(RequestValidationError) асинхронная защита validation_Exception_handler (запрос, exc): и во всех остальных случаях функция
@app.middleware("http") async def response_middleware (запрос: Request, call_next): Теперь функция response_middleware срабатывает все время и обрабатывает результат validation_Exception_handler, что нарушает основное назначение функции
При использовании @app.middleware("http") любые исключения исчезают вообще, и даже без @app.Exception_handler(RequestValidationError) код последовательно генерирует 200 ОК и
попробуйте: результат = ожидание call_next (запрос) res_body = б'' асинхронность для чанка в result.body_iterator: res_body += чанк ответ = подготовить_ответ (res_body.decode(), g_ERROR__ALL_OK) кроме RequestValidationError как e: ответ = подготовить_ответ({}, g_ERROR__INCORRECT_PARAMS) кроме исключения как e: ответ = подготовить_ответ({}, g_ERROR__UNKNOWN_ERROR) тоже не работает - вообще после
result = ожидание call_next(запрос) исключения не создаются
Как можно решить эту проблему?
С одной стороны нам нужен промежуточный код для разных функций, с другой стороны некоторые исключения (неверные параметры и т.п.) должны отслеживаться до промежуточного кода или внутри него, но не глубже.
как правильно комбинировать функции обработки исключений RequestValidationError
@app.Exception_handler(RequestValidationError) асинхронная защита validation_Exception_handler (запрос, exc): ответ = подготовить_ответ({}, g_ERROR__INCORRECT_PARAMS) вернуть JSONResponse(содержание=ответ) и функция промежуточного программного кода
@app.middleware("http") async def response_middleware (запрос: Request, call_next): пытаться: результат = ожидание call_next (запрос) res_body = б'' асинхронность для чанка в result.body_iterator: res_body += чанк ответ = подготовить_ответ (res_body.decode(), g_ERROR__ALL_OK) кроме исключения как e: ответ = подготовить_ответ({}, g_ERROR__UNKNOWN_ERROR) вернуть JSONResponse(содержание=ответ) Необходимо, чтобы ТОЛЬКО исключение RequestValidationError запускало функцию
@app.Exception_handler(RequestValidationError) асинхронная защита validation_Exception_handler (запрос, exc): и во всех остальных случаях функция
@app.middleware("http") async def response_middleware (запрос: Request, call_next): Теперь функция response_middleware срабатывает все время и обрабатывает результат validation_Exception_handler, что нарушает основное назначение функции
При использовании @app.middleware("http") любые исключения исчезают вообще, и даже без @app.Exception_handler(RequestValidationError) код последовательно генерирует 200 ОК и
попробуйте: результат = ожидание call_next (запрос) res_body = б'' асинхронность для чанка в result.body_iterator: res_body += чанк ответ = подготовить_ответ (res_body.decode(), g_ERROR__ALL_OK) кроме RequestValidationError как e: ответ = подготовить_ответ({}, g_ERROR__INCORRECT_PARAMS) кроме исключения как e: ответ = подготовить_ответ({}, g_ERROR__UNKNOWN_ERROR) тоже не работает - вообще после
result = ожидание call_next(запрос) исключения не создаются
Как можно решить эту проблему?
С одной стороны нам нужен промежуточный код для разных функций, с другой стороны некоторые исключения (неверные параметры и т.п.) должны отслеживаться до промежуточного кода или внутри него, но не глубже.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение