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,requestcoon = 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 cooncoon.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 cooncoon.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 cooncoon.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 cooncoon.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’/*’) 是解决跨域问题的
python Flask 编写 api 接口,CORS 解决 flask 跨域问题相关推荐
- jsonp-反向代理-CORS解决JS跨域问题的个人总结
jsonp-反向代理-CORS解决JS跨域问题的个人总结 网上说了很多很多,但是看完之后还是很混乱,所以我自己重新总结一下. 解决 js 跨域问题一共有8种方法, jsonp(只支持 get) 反向代 ...
- cors解决ajax跨域
此方法只支持spring4.2及以上版本 一.问题描述 A系统和B系统,A系统想通过ajax调用B系统中的后台方法(B系统SpringMVC) 二.问题解决 1.A系统中ajax: var str = ...
- CORS解决WebApi跨域问题(转)
CORS全称Cross-Origin Resource Sharing,中文全称跨域资源共享.它解决跨域问题的原理是通过向http的请求报文和响应报文里面加入相应的标识告诉浏览器它能访问哪些域名的请求 ...
- php 动态彩码辨色 接口的调用_好用的云函数!后端低代码接口开发,零基础编写API接口...
前言 在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作. 不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人, ...
- 好用的云函数!后端低代码接口开发,零基础编写API接口
前言 在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作. 不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人, ...
- LiveNVR拉流视频流媒体平台如何解决JS|axios调用接口时遇到的跨域问题
LiveNVR拉流视频流媒体平台如何解决JS|axios调用接口时遇到的跨域问题 1.JS调用遇到跨域解决示例 2.axios请求接口遇到跨域问题 2.1.post请求 2.2.get请求 3.RTS ...
- ssm项目解决AJAX跨域,ssm项目跨域访问
最近使用ssm开发了一个项目,为了项目的开发速度,采用的是前后端同时开发,所以前端文件没有集成在项目中,最后在调试时涉及到了跨域.跨域的解决方法很多,我采用的是最简单的一种,代码如下: 新建一个过滤器 ...
- 解决前端跨域的几种方法
解决前端跨域的几种方法 了解跨域出现的原因 解决跨域的几种方法 想要解决跨域 先要知道为什么会出现跨域 跨域:指的是浏览器不能执行其他网站的脚本 它是由浏览器的同源策略造成的 是浏览器对javascr ...
- 解决cookie跨域访问
v一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入 ...
最新文章
- 学习如何用平板电脑设计和绘制自己的动漫角色
- 用页传值方式解决模态窗口的Response.WriteFile文件下载
- 1400协议是什么和28181区别_舞阳钢铁生产30CrMnSiA国军标、国标、舞钢技术协议有什么区别...
- 剖析ifstream打开含中文路径名文件失败的原因(转)
- Builder模式和Spring框架
- java getbytes 长度_JAVA中的getBytes()方法
- 编程语言基础 c语言同步教案,C语言程序设计基实验教案.doc
- “物联网”“云计算” IT业新概念风起云涌
- spark基础之spark sql运行原理和架构
- DAY04 WINDOWS 文件的共享以及FTP服务器的搭建
- 配置WIN2003远程桌面的客户端连接数
- 使用远程服务器Spyder
- opencv+resize+padding+concate
- 病毒周报(100118至100124)
- java的日期格式化
- submail 发送国际短信,国内短信,国际国内邮箱工具类
- 很全的HTML5功能概述,温故而知新,可以为师矣!
- java中几种常用的对象类型(po,vo,bo,dto)
- 原生的HTML Table表格实现表头添加斜杠
- 去年一个百万级的小软件项目经验分享,20来个功能模块,项目不太好做有些棘手