Bläddra i källkod

增加记录请求信息中间件及两个测试接口

locky 3 år sedan
förälder
incheckning
5dec22a5ff

+ 1 - 0
Ansjer/cn_config/test_settings.py

@@ -27,6 +27,7 @@ MIDDLEWARE = [
     'django.middleware.security.SecurityMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.common.CommonMiddleware',
+    'MiddleWare.requestRecord.RequestRecordMiddleware',     # 记录请求信息
     # 'django.middleware.csrf.CsrfViewMiddleware',
     'corsheaders.middleware.CorsPostCsrfMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',

+ 1 - 1
Ansjer/local_config/local_settings.py

@@ -71,7 +71,7 @@ MIDDLEWARE = [
     'django.middleware.security.SecurityMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.common.CommonMiddleware',
-    'MiddleWare.requestRecord.RequestRecordMiddleware',
+    'MiddleWare.requestRecord.RequestRecordMiddleware',     # 记录请求信息
     # 'django.middleware.csrf.CsrfViewMiddleware',
     'corsheaders.middleware.CorsPostCsrfMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',

+ 9 - 0
Controller/TestApi.py

@@ -92,6 +92,15 @@ class testView(View):
         elif operation == 'tests':
             res = make_password(123456)
             return JsonResponse(status=200, data=res,safe=False)
+        elif operation == 'testMiddleWare':
+            a = int('a')
+            return JsonResponse(status=200, safe=False)
+        elif operation == 'testMiddleWare2':
+            try:
+                a = int('a')
+                return JsonResponse(status=200, safe=False)
+            except Exception as e:
+                return response.json(500, repr(e))
         elif operation == 'cbu':
             return self.createBucket()
         elif operation == 'vodList':

+ 7 - 0
MiddleWare/__init__.py

@@ -0,0 +1,7 @@
+# -*- coding: utf-8 -*-
+"""
+@Time : 2021/9/22 17:00
+@Auth : Locky
+@File :__init__.py.py
+@IDE :PyCharm
+"""

+ 56 - 0
MiddleWare/requestRecord.py

@@ -0,0 +1,56 @@
+# -*- 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 Model.models import RequestRecordModel
+
+
+class RequestRecordMiddleware(MiddlewareMixin):
+    def process_request(self, request):
+        request.start_time = time.time()
+
+    def process_response(self, request, response):
+        execute_time = time.time() - request.start_time
+        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 = ''
+
+        if response.status_code == 500:     # 处理没有捕获异常的情况
+            request_record_data = {
+                'method': method,
+                'url': url,
+                'parameter': parameter,
+                'execute_time': execute_time,
+                'status_code': 500,
+                'reason_phrase': response.reason_phrase,
+            }
+            RequestRecordModel.objects.create(**request_record_data)
+        else:     # 处理捕获异常的情况
+            print('content: ', response.content)
+            content = eval(str(response.content, 'utf-8'))   # bytes 转为 dict
+            if content['result_code'] == 500:
+                print(content['result'])
+                request_record_data = {
+                    'method': method,
+                    'url': url,
+                    'parameter': parameter,
+                    'execute_time': execute_time,
+                    'status_code': 500,
+                    'reason_phrase': content['result'],
+                }
+                RequestRecordModel.objects.create(**request_record_data)
+        return response