Browse Source

MOD:解决跨域问题,修改返回数据格式

cxyu 3 năm trước cách đây
mục cha
commit
fd11d26b0c
1 tập tin đã thay đổi với 38 bổ sung25 xóa
  1. 38 25
      web_module/tornado_api.py

+ 38 - 25
web_module/tornado_api.py

@@ -27,8 +27,20 @@ ad_plan_typesetting_table = Table('ad_plan_typesetting', db.metadata,
 # 1.实现本机服务
 # 2.实现线上docker-selenium服务
 
+class BaseHandler(tornado.web.RequestHandler):
+    def options(self):
+        pass
 
-class create_ad_plan_remote(tornado.web.RequestHandler):
+    def set_default_headers(self):
+        print('get in ')
+        self.set_header('Access-Control-Allow-Origin', '*')
+        self.set_header('Access-Control-Allow-Headers', '*')
+        self.set_header('Access-Control-Max-Age', 1000)
+        self.set_header('Content-type', '*')
+        self.set_header('Access-Control-Allow-Methods', '*')
+
+
+class create_ad_plan_remote(BaseHandler):
     # 1.批量创建计划
     # 返回创建计划是否已经开始
     def post(self):
@@ -41,7 +53,7 @@ class create_ad_plan_remote(tornado.web.RequestHandler):
                          args=(user_id, ad_plan_name, wechat_json, log_ad, db, cookie_canuse)).start()
 
 
-class create_ad_plan_local(tornado.web.RequestHandler):
+class create_ad_plan_local(BaseHandler):
     def post(self):
         user_id = self.get_argument("user_id", None)
         ad_plan_typesetting = self.get_argument("plan_typesetting", None)
@@ -49,7 +61,7 @@ class create_ad_plan_local(tornado.web.RequestHandler):
         print(user_id, ad_plan_typesetting, ad_plan_name)
         sql_session = db.DBSession()
         if user_id is None or ad_plan_name is None or ad_plan_typesetting is None:
-            self.write(json.dumps({'status': {'msg': 'url parameter error', "RetCode": 400}}))
+            self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
             return
         # 落地页名字精确到毫秒,默认是全局唯一
         # TODO:检查一下plan--内容 有无问题-----和前端确定一下
@@ -60,10 +72,10 @@ class create_ad_plan_local(tornado.web.RequestHandler):
             table_ad_plan_typesetting=ad_plan_typesetting_table)
         sql_session.execute(ad_plan_typesetting_inserte)
         sql_session.commit()
-        self.write(json.dumps({'status': {'msg': 'success', "RetCode": 200}}, ensure_ascii=False))
+        self.write({'status': {'msg': 'success', "RetCode": 200}})
 
 
-class create_ad_layout_remote(tornado.web.RequestHandler):
+class create_ad_layout_remote(BaseHandler):
     # 1.批量创建落地页
     def post(self):
         user_id = self.get_argument("user_id", None)
@@ -75,7 +87,7 @@ class create_ad_layout_remote(tornado.web.RequestHandler):
                          args=(user_id, layout_name, wechat_json, log_ad, db, cookie_canuse)).start()
 
 
-class create_ad_layout_local(tornado.web.RequestHandler):
+class create_ad_layout_local(BaseHandler):
     def post(self):
         user_id = self.get_argument("user_id", None)
         layout_typesetting = self.get_argument("layout_typesetting", None)
@@ -83,7 +95,7 @@ class create_ad_layout_local(tornado.web.RequestHandler):
         print(user_id, layout_typesetting, layout_name)
         sql_session = db.DBSession()
         if user_id is None or layout_name is None or layout_typesetting is None:
-            self.write(json.dumps({'status': {'msg': 'url parameter error', "RetCode": 400}}))
+            self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
             return
         # 落地页名字精确到毫秒,默认是全局唯一
         # TODO:检查一下layout--内容 有无问题-----和前端确定一下
@@ -94,15 +106,15 @@ class create_ad_layout_local(tornado.web.RequestHandler):
             table_layout_typesetting=layout_typesetting_table)
         sql_session.execute(layout_typesetting_inserte)
         sql_session.commit()
-        self.write(json.dumps({'status': {'msg': 'success', "RetCode": 200}}, ensure_ascii=False))
+        self.write({'status': {'msg': 'success', "RetCode": 200}})
 
 
 # TODO:wechat_info,human_info 这两张表有空时需要进行对应改进
-class ad_status(tornado.web.RequestHandler):
+class ad_status(BaseHandler):
     def get(self):
         user_id = self.get_argument("user_id", None)
         if user_id is None:
-            self.write(json.dumps({'status': {'msg': 'url parameter error', "RetCode": 400}}))
+            self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
             return
         sql_session = db.DBSession()
 
@@ -116,11 +128,11 @@ class ad_status(tornado.web.RequestHandler):
                  'create_time': create_time.strftime("%Y-%m-%d %H:%M:%S"), 'status': status})
         # result = json.loads(result)
         print(result)
-        self.write(json.dumps({'status': {'msg': 'success', "RetCode": 200},
-                               'ad_status_info': result}, ensure_ascii=False))
+        self.write({'status': {'msg': 'success', "RetCode": 200},
+                    'ad_status_info': result})
 
 
-class ad_human_info(tornado.web.RequestHandler):
+class ad_human_info(BaseHandler):
 
     @staticmethod
     def refresh_wechat_cookies(tornado_web, user_id):
@@ -141,19 +153,19 @@ class ad_human_info(tornado.web.RequestHandler):
             if not log_ad.wechat_cookies_check_alive(cookie_db):
                 # cookie 不能使用
                 wechat_code = log_ad.log_in()
-                tornado_web.write(json.dumps({'status': {'msg': 'success', "RetCode": 200},
-                                              'wechat_code': wechat_code}))
+                tornado_web.write({'status': {'msg': 'success', "RetCode": 200},
+                                   'wechat_code': wechat_code})
                 print('cookie can not use')
             else:
                 # cookie 可以继续使用
                 cookie_canuse = True
                 log_ad.driver.get('https://a.weixin.qq.com/index.html')
-                tornado_web.write(json.dumps({'status': {'msg': 'success', "RetCode": 200}}))
+                tornado_web.write({'status': {'msg': 'success', "RetCode": 200}})
         else:
             # cookie 不能使用
             wechat_code = log_ad.log_in()
-            tornado_web.write(json.dumps({'status': {'msg': 'success', "RetCode": 200},
-                                          'wechat_code': wechat_code}))
+            tornado_web.write({'status': {'msg': 'success', "RetCode": 200},
+                               'wechat_code': wechat_code})
         return log_ad, cookie_canuse
 
     # 1.人群包获取
@@ -166,7 +178,7 @@ class ad_human_info(tornado.web.RequestHandler):
         is_refresh = self.get_argument("is_refresh", None)
         print(user_id, is_refresh)
         if user_id is None or is_refresh is None:
-            self.write(json.dumps({'status': {'msg': 'url parameter error', "RetCode": 400}}))
+            self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
             return
         sql_session = db.DBSession()
         # TODO:一个涉及到selenium-driver的请求-生命周期.----看一下tornado是怎么处理请求的生命周期
@@ -188,11 +200,12 @@ class ad_human_info(tornado.web.RequestHandler):
             result = sql_tools.get_human_info(sql_session=sql_session, user_id=user_id)
             result = [json.loads(x) for x in result]
             print(result)
-            self.write(json.dumps({'status': {'msg': 'success', "RetCode": 200},
-                                   'human_info': result}, ensure_ascii=False))
+            self.write({'status': {'msg': 'success', "RetCode": 200},
+                        'human_info': result})
+
 
+class ad_wechat_info(BaseHandler):
 
-class ad_wechat_info(tornado.web.RequestHandler):
     # 1.公众号相关信息获取
     def get(self):
         # TODO:添加分页
@@ -203,7 +216,7 @@ class ad_wechat_info(tornado.web.RequestHandler):
         is_refresh = self.get_argument("is_refresh", None)
         print(user_id, is_refresh)
         if user_id is None or is_refresh is None:
-            self.write(json.dumps({'status': {'msg': 'url parameter error', "RetCode": 400}}))
+            self.write({'status': {'msg': 'url parameter error', "RetCode": 400}})
             return
         sql_session = db.DBSession()
         # TODO:一个涉及到selenium-driver的请求-生命周期.----看一下tornado是怎么处理请求的生命周期
@@ -227,8 +240,8 @@ class ad_wechat_info(tornado.web.RequestHandler):
                 service_name, wechat_name = _
                 result_list.append({'service_name': service_name, 'wechat_name': wechat_name})
             print(result_list)
-            self.write(json.dumps({'status': {'msg': 'success', "RetCode": 200},
-                                   'wechat_info': result_list}, ensure_ascii=False))
+            self.write({'status': {'msg': 'success', "RetCode": 200},
+                        'wechat_info': result_list})
 
 
 def make_app():