# -*- 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 # 请求是否成功 if content['code']: old_key = 'code' new_key = 'result_code' new_dict = {new_key: content.pop(old_key)} for key, value in content.items(): new_dict[key] = value content = new_dict.copy() if content['result_code'] != 0: LOGGER.info('请求路径:{}, 请求方式:{}, 输入数据:{}, 输出数据:{}, 响应状态:{}'.format(url, method, parameter, content, response.status_code)) finally: return response