当前位置:   article > 正文

python Flask 编写 api 接口,CORS 解决 flask 跨域问题_flask-cors python3 import 的名称

flask-cors python3 import 的名称

为什么要编写 API 接口

flask 本身就是一个web框架,完全可以通过内嵌的方式使用python flask框架完成 web 页面的开发。
因为现在都讲究一个前后端分离,那为什么要前后端分离呢,且听我慢慢道来。
对于前后端分离的应用场景,不是所有的场景都适合,但是大多数项目都能够通过前后端分离来实现。由于我主要从事企业级后台应用的前端开发工作,个人认为对于后台应用的开发来说,前后端分离带来的利是远大于弊的。
大多数后台应用我们都可以做成SPA应用(单页应用),而单页应用最主要的特点就是局部刷新,这通过前端控制路由调用AJAX,后台提供接口便可以实现,而且这样的方式用户体验更加友好,网页加载更加快速,开发和维护成本也降低了不少,效率明显提升。同样的,在展示类网站和移动APP页面中前后端分离也同样试用。前后端不分离的情况下,服务端要单独针对Web端做处理,返回完整HTML,这样势必增加服务端的复杂度,可维护性差,而web端需要加载完整的HTML,一定程度上影响网页性能,这对于移动端性能为王的地方非常的不友好。
随着前端技术的发展和迭代,前端MVC框架应运而生,利用目前主流的前端框架,如React、Vue、Angular等我们可以轻松的构建起一个无需服务器端渲染就可以展示的网站,同时这类框架都提供了前端路由功能,后台可以不再控制路由的跳转,将原本属于前端的业务逻辑全部丢给前端,这样前后端分离可以说是最为彻底。

前期准备

  • python 3
  • flask、flask_cors 等库
  • 开发工具

代码实现

# -*- 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')
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91

整个项目简单的介绍了一些基本接口的编写,启动后通过当前ip+端口号的形式访问,要访问的路径则为@app.route(’/vs’,methods=[‘get’,‘post’])中/vs,例:127.0.0.1:887/vs。
CORS(app, resources=r’/*’) 是解决跨域问题的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/46806
推荐阅读
相关标签
  

闽ICP备14008679号