Ajax跨域访问Flask构建的Python Web服务器

看到标题,你可能会觉得作者比较奇葩,为什么要把事情搞得这么复杂?其实作者也不想这样,只是去年已经用PHP搭建好了系统,而且功能、UI等也基本调试的差不多了;现在要借助Python强大而方便的数据分析功能来分析数据,最简单直接的也就是这么做了。或许之后,会考虑用Django等来重构整个系统,但这并不是现在的重点。

利用Ajax跨域访问Flask服务器

Web前端通过Ajax请求Flask服务器的接口:


Ajax跨域请求的时候可以在服务端设置header信息,来达到跨域请求的目的(不需要通过jsonp的方式设置ajax参数):

Response.AddHeader("Access-Control-Allow-Origin", "*");

Flask服务器端代码如下:

@app.route('/demo', methods=['POST'])
def home():
    result_json = json.dumps(result)
    # Response
    resp = Response(result_json)
    resp.headers['Access-Control-Allow-Origin'] = '*'
    return resp

Python操作Json

JSON (JavaScript Object Notation), specified by RFC 7159 (which obsoletes RFC 4627) and by ECMA-404, is a lightweight data interchange format inspired by JavaScript object literal syntax (although it is not a strict subset of JavaScript).

import json

list1 = [20, 6, 15, 53, 47]
list2 = [(6, 'John', '20'), (20, 'David', '21'), (47, 'Amy', '23'), (15, 'Kim', '18'), (53, 'Mary', '20')]

list3 = []
for a in list2:
    dict = {}
    dict['id'] = a[0]
    dict['name'] = a[1]
    dict['age'] = a[2]
    list3.append(dict)
result = {}
result['id'] = list1
result['data'] = list3

json1 = json.dumps(list1)
json2 = json.dumps(list2)
json3 = json.dumps(list3)
json4 = json.dumps(result)
print(json1)
print(json2)
print(json3)
print(json4)

decode = json.loads(json4)
print(decode)

JS解析Json数据


参考资料:

Ajax跨域请求

How do I set response headers in Flask?

Flask API

Python操作json的API

JS解析json数据(如何将json字符串转化为数组)

你可能感兴趣的:(Ajax跨域访问Flask构建的Python Web服务器)