flask 本身就是一个web框架,完全可以通过内嵌的方式使用python flask框架完成 web 页面的开发。
因为现在都讲究一个前后端分离,那为什么要前后端分离呢,且听我慢慢道来。
对于前后端分离的应用场景,不是所有的场景都适合,但是大多数项目都能够通过前后端分离来实现。由于我主要从事企业级后台应用的前端开发工作,个人认为对于后台应用的开发来说,前后端分离带来的利是远大于弊的。
大多数后台应用我们都可以做成SPA应用(单页应用),而单页应用最主要的特点就是局部刷新,这通过前端控制路由调用AJAX,后台提供接口便可以实现,而且这样的方式用户体验更加友好,网页加载更加快速,开发和维护成本也降低了不少,效率明显提升。同样的,在展示类网站和移动APP页面中前后端分离也同样试用。前后端不分离的情况下,服务端要单独针对Web端做处理,返回完整HTML,这样势必增加服务端的复杂度,可维护性差,而web端需要加载完整的HTML,一定程度上影响网页性能,这对于移动端性能为王的地方非常的不友好。
随着前端技术的发展和迭代,前端MVC框架应运而生,利用目前主流的前端框架,如React、Vue、Angular等我们可以轻松的构建起一个无需服务器端渲染就可以展示的网站,同时这类框架都提供了前端路由功能,后台可以不再控制路由的跳转,将原本属于前端的业务逻辑全部丢给前端,这样前后端分离可以说是最为彻底。
# -*- coding: utf-8 -*-
# /usr/bin/python3
from flask import Flask, request, jsonify, make_response
from flask_cors import CORS
import pymysql
import urllib, urllib.request, sys
import ssl
import json
import pprint
# from urllib import parse,request
coon = pymysql.connect(host='127.0.0.1',user='root',password='123456',db='python',autocommit=True)
app = Flask(__name__)
CORS(app, resources=r'/*')
@app.route('/arp',methods=['get','post'])
def arp2():
header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'}
url='http://rap2api.taobao.org/app/mock/281909/place'
req = urllib.request.Request(url,headers=header_dict)
res = urllib.request.urlopen(req)
res = json.loads(res.read())
return res
@app.route('/userList',methods=['get','post'])
def userList():
header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'}
url='http://rap2api.taobao.org/app/mock/281909/userList'
req = urllib.request.Request(url,headers=header_dict)
res = urllib.request.urlopen(req)
res = json.loads(res.read())
return res
@app.route('/select',methods=['get','post'])
def json_contents():
global coon
coon.ping()
cursor = coon.cursor()
cursor.execute("select * from asp")
data = cursor.fetchall()
return jsonify(data)
@app.route('/miss',methods=['get','post'])
def json_miss():
try:
miss = request.form['miss']
except Exception as e:
miss = request.args.get('miss')
global coon
coon.ping()
cursor = coon.cursor()
cursor.execute("select * from asp where id=%s",miss)
data = cursor.fetchall()
return jsonify(data)
@app.route('/list',methods=['get','post'])
def json_list():
try:
ids = request.form['id']
except Exception as e:
ids = request.args.get('id')
global coon
coon.ping()
cursor = coon.cursor()
cursor.execute("select * from list where flag=%s limit 1",ids)
data = cursor.fetchall()
return jsonify(data)
@app.route('/vs',methods=['get','post'])
def json_vs():
# 访问量接口
global coon
coon.ping()
cursor = coon.cursor()
cursor.execute("select * from t_vs")
data = cursor.fetchall()
cursor = coon.cursor()
sql = "update t_vs set vs=%s where id=1"
cursor.execute(sql,data[0][1]+1)
data1 = cursor.fetchall()
return jsonify(data)
if __name__=="__main__":
app.run(port=887,debug=True,host='0.0.0.0')
整个项目简单的介绍了一些基本接口的编写,启动后通过当前ip+端口号的形式访问,要访问的路径则为@app.route(’/vs’,methods=[‘get’,‘post’])中/vs,例:127.0.0.1:887/vs。
CORS(app, resources=r’/*’) 是解决跨域问题的