|
@@ -0,0 +1,38 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+"""
|
|
|
+@Time : 2021/9/22 17:08
|
|
|
+@Auth : Locky
|
|
|
+@File :requestRecord.py
|
|
|
+@IDE :PyCharm
|
|
|
+"""
|
|
|
+import json
|
|
|
+import time
|
|
|
+from django.utils.deprecation import MiddlewareMixin
|
|
|
+from AnsjerPush.config import LOGGER
|
|
|
+
|
|
|
+
|
|
|
+class RequestRecordMiddleware(MiddlewareMixin):
|
|
|
+ def process_request(self, request):
|
|
|
+ request.start_time = time.time()
|
|
|
+
|
|
|
+ def process_response(self, request, response):
|
|
|
+ try:
|
|
|
+ method = request.method
|
|
|
+ url = request.path
|
|
|
+
|
|
|
+ # 获取请求参数并转为字符串
|
|
|
+ if method == 'GET':
|
|
|
+ parameter = json.dumps(request.GET.dict())
|
|
|
+ elif method == 'POST':
|
|
|
+ parameter = json.dumps(request.POST.dict())
|
|
|
+ else:
|
|
|
+ parameter = ''
|
|
|
+ content = eval(str(response.content, 'utf-8')) # bytes 转为 dict
|
|
|
+
|
|
|
+ # 记录响应码不为0的接口日志
|
|
|
+ if ('result_code' in content and content['result_code'] != 0) or \
|
|
|
+ ('code' in content and content['code'] != 0):
|
|
|
+ LOGGER.info('请求路径:{}, 请求方式:{}, 输入数据:{}, 输出数据:{}, 响应状态:{}'.
|
|
|
+ format(url, method, parameter, content, response.status_code))
|
|
|
+ finally:
|
|
|
+ return response
|