python Flask 编写 api 接口,CORS 解决 flask 跨域问题

为什么要编写 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')
    

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

又蓝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值