我有一个基于 Django 的 API。
有时我的客户告诉我,他们的一些请求返回 400(错误请求),即使他们不应该这样做。
我想到了一种处理和调试确切问题的好方法,通过保存失败的请求、所有 header (例如访问 token )和时间戳,所以当我看到有问题的模式时,我'将能够调试它并找到原因。
关于我的方法的问题是 - 我如何“触发”一个函数,每次我返回状态为 400 的响应时,该函数将收集请求及其所有 header ?
请您参考如下方法:
如果 400 响应是由 Django 生成的,您可以使用 custom middleware (注意:中间件 api 在 1.10 中发生了变化,对于 django <= 1.9,文档是 here )和 logging module - 只需确保您的日志记录是 correctly configured在你的 Django 设置中。
如果 400 响应发生在更高级别,那么您必须根据项目的部署方式检查相关文档
另外 FYIY django.core.WSGIHandler 在实例化 HttpRequest 对象时发生 UnicodeDecodeError 时产生 400 响应 - 在这种情况下 AFAICT中间件甚至不会被调用。您应该已经在为 django.requests (cf https://docs.djangoproject.com/en/1.10/topics/logging/#django-request )
