#python #django
#python #django
Вопрос:
У меня есть API на основе Django.
Иногда мои клиенты сообщают мне, что некоторые из их запросов возвращают 400 (неверный запрос), даже если они не должны этого делать.
Я подумал о хорошем способе обработки и отладки именно этой проблемы, сохранив неудачные запросы со всеми заголовками (например, токеном доступа) и меткой времени, поэтому, когда я увижу проблемный шаблон, я смогу его отладить и найти причину.
Мой вопрос относительно моего метода заключается в следующем: как я могу «запустить» функцию, которая будет собирать запрос со всеми его заголовками каждый раз, когда я возвращаю ответ со статусом 400?
Комментарии:
1. Действительно ли 400 ответов генерируются самим Django?
2. Я использую Django rest framework, и там генерируется 400 для сбойных запросов, но я хочу, чтобы он обычно проверял статус возвращенного ответа и решал, требуется ли ведение журнала
3. тогда посмотрите на мой ответ…
Ответ №1:
Если ответ 400 генерируется Django, вы можете использовать пользовательское промежуточное программное обеспечение (осторожно: api промежуточного программного обеспечения изменен в 1.10, для django <= 1.9 документ здесь) и logging
модуль — просто убедитесь, что ваше ведение журнала правильно настроено в настройках django.
Если ответ 400 происходит на более высоком уровне, вам нужно будет проверить соответствующий документ в соответствии с тем, как развернут ваш проект
Также FYIY django.core.WSGIHandler
выдает ответ 400, когда a UnicodeDecodeError
происходит при создании HttpRequest
экземпляра объекта — в этом случае AFAICT промежуточные программы даже не будут вызваны. Вы уже должны найти следы этих событий в регистраторе, настроенном для django.requests
(cf https://docs.djangoproject.com/en/1.10/topics/logging/#django-request )