vue-cli项目前后端分离数据交互之ajax和后台python通信flask,web服务器 wampserver和flask兼容!!

帖子解决两个问题:
第一、ajax发出请求后端用flask轻量化部署,包括websocket通信
第二、web服务器部署集成环境wamrserver和flask冲突(具体表现在:ajax中的请求会默认wamp不会指向flask)

先解决第一个问题:

用vue-cli 创建项目后配置下 项目的配置文件,config/index.js 找到proxyTable,配置如下:

亲测有效的方法
proxyTable: {
   
        '/api/*':{
    //这里面的  '/api/*' 才好用, 其他的形式如:'/api'不失败的
        target:'http://xxxx.com;8011',
        changeOrigin: true,//跨域(很重要,前后端分离时所在服务器ip不同会涉及到跨域的问题)
        pathRewrite: {
   
          '^/api': '/api'  // 这里的/api 会替代http://xxxx.com, 具体前端请求例子往下看
        }
      }
      //这里设置的请求用/api替代,所以后台flask中的请求地址也应该是/api开头(必须这样否则请求不成功)

后台先配置下flask,如下代码,保存到.py文件后在cmd中python run.py运行,会启动flask服务

其中@app.route(’/api/aa/hello_world’,methods=[‘GET’,‘POST’]) 和@app.route(’/api/sendAjax2’, methods=[‘POST’])中带请求地址必须都以/api开头同config/index.js 里的proxyTable设置中保持一致,

待请求中的最后面hello_world和sendAjax2是后台对应的方法,待请求结尾必须以方法名结尾,表示调用该方法。

from flask import Flask
from flask import request
import json
app = Flask(__name__) 
@app.route('/api/aa/hello_world',methods=['GET','POST'])//待请求的地址以/api开头
def hello_world(): 
 data =  request.form.get("data")//接收前端传过来的参数
 print(data)
 return (data)
 
@app.route('/api/sendAjax2', methods=['POST'])/待请求的地址以/api开头
def sendAjax2():
    return "46575"
#接收前端上传的真实设备xlsx文件
@app.route('/api/upload_xlsx', methods=['POST'])
def upload_xlsx(): 
    f = request.files['file']
    filename = f.filename
    upload_file = request.files['file']
    upload_file.save('{}/{}'.format(os.getcwd(), filename))
    os.rename('{}/{}'.format(os.getcwd(), filename), '{}/{}'.format(os.getcwd(), 'Device.xlsx'))#重命名
    return '{}/{}'.format(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值