#python-2.7 #python-requests #fastapi #uvicorn #starlette
Вопрос:
Я новичок в фреймворке FastAPI, я хочу распечатать код состояния ответа из запроса PUT.
@app.put('/user/{id}', status_code=status.HTTP_200_OK) async def processing(id: str, request: Request, response: Response): data = await request.json() status = response.status_code print(status_code) logger.info("Got response [%s]", status) return data
Возвращенный статус — «Нет». Но сервер uvicorn показывает статус 200 OK. Как я могу включить этот код в свой журнал/распечатку?
Спасибо.
Комментарии:
1. Параметр
status_code
от декоратора не будет установлен до тех пор, пока вы не вернетесь из своей функции. Поскольку вы находитесь внутри функции, обрабатывающей сам запрос, разве вы не знаете, все ли прошло нормально или нет?2. @MatsLindh спасибо за помощь. Сервер (uvicorn) действительно указывает статус ответа в терминале, но я хотел закодировать условие if/else в зависимости от возвращенного кода состояния. Как я мог это сделать?
3. Вы устанавливаете код статуса — какой код статуса вы хотите перехватить? Функция просмотра — та, которую вы включили, — настраивает свой собственный код состояния
response.status_code
либо с помощьюstatus_code
параметра декоратора, либо с помощью него. Если вы хотите перехватить внутренние коды состояния (4xx, 5xx), которые ваш код не генерирует сам по себе, возможно, вам нужно промежуточное программное обеспечение, а не конечная точка представления.4. @MatsLindh Спасибо за разъяснение, попытаюсь реализовать промежуточное программное обеспечение для перехвата кодов состояния, генерируемых http-вызовами с другого сервера.