在到达视图集之前记录所有 REST API 请求

lin*_*eak 5 django logging django-rest-framework

我希望能够记录到达 Django REST framework API 的所有 REST 请求。我也想记录 API 调用的响应。我在哪里可以定义记录所有 REST API 请求和响应的函数?

Ald*_*und 2

您可以编写 Django 中间件组件来拦截进出应用程序的流量。

将有两种方法,process_responseprocess_request。使用每一个分别记录响应和请求。

class LoggingMiddleware:

    def process_request(self, request):
        # do your logging here

    def process_response(self, request, response):
        # do your logging here
Run Code Online (Sandbox Code Playgroud)

但这将记录所有请求和响应,而不仅仅是特定 API。如果您只想记录 API,您可以轻松地在此方法中检查 URL 中的前缀/api,并基于此记录信息。