A15.从零开始前后端react+flask - 将前后端联系起来
视频链接:https://www.bilibili.com/video/av78415640
前端:react,后端:flask,我们在前面课程中都已经分别单独学习。
那么,怎么把前后端联系起来呢?
这是系列教程,前面基础部分可以查看博客其他内容。
(这节课信息量稍微有点大,建议多看几次)
这里面的坑实在是太多了,我一个一个自己踩过才知道。
添加ApiUtil.js
一些接口,暂时还用不到这么多。
export default class ApiUtil {static URL_IP = 'http://127.0.0.1:5001';static URL_ROOT = '/api/v1';static API_STAFF_UPDATE = ApiUtil.URL_ROOT + '/updateStaff';static API_STAFF_LIST = ApiUtil.URL_ROOT + '/getStaffList/';static API_STAFF_DELETE = ApiUtil.URL_ROOT + '/deleteStaff/';static API_STAFF_SEARCH_3 = ApiUtil.URL_ROOT + '/searchStaff_3'; //只搜索3个属性static API_CHECK_PASSWORD = ApiUtil.URL_ROOT + '/checkPassword';static API_ADMIN = ApiUtil.URL_ROOT + '/gotoAdmin'; //进入管理员状态static API_EXPORT_TO_FILE = ApiUtil.URL_ROOT + '/export_to_file'; //将数据导出到文件}
添加HttpUtil.js
写get和post方法
export default class HttpUtil{static get(url){ //我们定义的get函数,只需要指定访问api即可return new Promise((resolve,reject)=>{fetch(url).then(response=>{if(response.ok){return response.json();}else{throw new Error(response.status + " : "+response.statusText);}}).then(result=>resolve(result)).catch(error=>{reject(error);})});}static post(url, data){ //而post函数,不仅指定api,还需要从前端传递参数信息过来return new Promise((resolve,reject)=>{fetch(url,{ method: 'POST',headers:{'Accept': 'application/json','Content-Type': 'application/json',},body: JSON.stringify(data)}).then(response=>response.json()).then(result=>resolve(result)).catch(error=>{reject(error);})})}}
GET和POST区别:
https://blog.csdn.net/qq_39539470/article/details/82470360
简单总结:
1,GET请求,请求的数据会附加在URL之后
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。
2,在使用GET请求时,传输数据会受到URL长度的限制。
3,POST的安全性比GET的高。
修改handleOK函数
handleOK = ()=>{this.props.form.validateFields((err,values)=>{if(err){message.error('表单数据有误,请根据提示填写!')}else{// console.log("填写正确!");HttpUtil.post(ApiUtil.API_STAFF_UPDATE, values).then(re=>{console.log("返回结果:",re);message.info(re.message);}).catch(error=>{message.error(error.message);});this.setState({visible: false,});this.props.onDialogConfirm(values);}})}
在后端的run.py
from flask import Flask, request
import jsonapp = Flask(__name__, template_folder='../front-end', static_folder='../front-end', static_path='')@app.route('/hi')
def hi():return 'hi~'#api接口前缀
apiPrefix = '/api/v1/'################## Staff接口 ##################@app.route(apiPrefix + 'updateStaff', methods=['POST'])
def updateStaff():data = request.get_data(as_text=True)re = {'code': 0,'data':data,'message': "这是测试呀"}print("后端数据:",data)return json.dumps(re)if __name__=="__main__":app.run(debug=True, port=5001)
其中,对于 app = Flask(...)
app = Flask(__name__, template_folder='../front-end', static_folder='../front-end', static_path='')
自己总结:template_folder 从run.py文件开始定位模板文件(index.html)<找到index.html>。static_folder从run.py开始找资源文件,资源文件在html文件中要用到<给index.html中js提供一个查找位置>。static_url_path=''比较方便
你以为,这样就能成功吗?并没有。
在package.json中加入:
"proxy": "http://127.0.0.1:5001"
如何,刷新一下,结果发现没有变化,简直差点暴捶电脑。因为之前一样的操作是完全可以的。
冷静思考,debug。发现解决办法:
关闭前端服务器,重启!!! npm start
终于成功:
前端结果:
后端结果:
成功,收工,下期见。
注:此套教程有配套视频和代码,详情见
A01.从零开始前后端react+flask - 前面的话+技术介绍:https://blog.csdn.net/GreatXiang888/article/details/103269687
一些有用资料
React学习(五)——向服务器请求数据并显示 https://blog.csdn.net/daxiazouyizou/article/details/79773307
Promise初步详解(resolve,reject,catch) https://blog.csdn.net/weixin_41888813/article/details/82882375
如何理解package.json中的proxy字段?https://segmentfault.com/a/1190000014891894
我们并没有遇到CORS问题,因为在浏览器眼里,我们还是将请求发送到"http://localhost:3000" 中的,它并不知道creat-react-app已经将请求转发到了"http://0.0.0.89:7300" 这个所谓的会触发浏览器CORS安全策略的其他Origin。
antd做form表单的组件共用,利用mapPropsToFields填写默认值 https://www.cnblogs.com/zhuhuoxingguang/p/10938659.html
A15.从零开始前后端react+flask - 将前后端联系起来相关推荐
- A19.从零开始前后端react+flask - 删除前后端数据
接上文 A18.从零开始前后端react+flask - 修改前后端数据 一 找到HomePage.js中 <Icon type="close" title="删除 ...
- A16.从零开始前后端react+flask - 将前端数据保存到数据库
上一节,我们讲了如何将前后端联系起来. A15.从零开始前后端react+flask - 将前后端联系起来 https://blog.csdn.net/GreatXiang888/article/de ...
- A20.从零开始前后端react+flask - 查找数据
接触过数据库的同学,都知道我们需要4个操作:"增删改查". 增:插入数据.A16.从零开始前后端react+flask - 将前端数据保存到数据库 删:删除数据.A19.从零开始前 ...
- A04.从零开始前后端react+flask - 用flask说hello
视频链接:https://www.bilibili.com/video/av77344039 ps:安装python和flask见前文. 文档 flask中文官方文档: https://dormous ...
- 基于flask+vue前后端分离 一款简单的旅游网站源码,带admin管理系统
介绍 毕业设计-flask-vue前后端分离 一款简单的旅游网站,带admin管理系统 软件架构 软件架构说明 使用Python-flask 轻量级框架编写后端程序,前端采用Vue编写,后端接口都在蓝 ...
- [react] 组件卸载前,加在DOM元素的监听事件和定时器要不要手动清除?为什么?
[react] 组件卸载前,加在DOM元素的监听事件和定时器要不要手动清除?为什么? 定时器要在 componentWillUnmount 手动清除,直接绑定在JSX里的事件监听器不用,使用ref绑定 ...
- Vue前端和Java后端 联调使用AES 前后端加密解密
Vue前端和Java后端 联调使用AES 前后端加密解密 最近在项目中需要针对重要数据进行加密传输,在网上找了一大推加密方式 最终采用AES 加密 Java端 package com.zk.web.u ...
- 商城前后端prd文档/经销商门户/瓶箱回收系统/组织管理平台/系统管理后台/商城文档/司机管理移动端原型/电商前后端原型/电商前后端需求文档//运输公司管理/产品库管理/资金管理/移动端电商原型文档
商城前后端prd文档/经销商门户/瓶箱回收系统/组织管理平台/系统管理后台/商城文档/司机管理移动端原型/电商前后端原型/电商前后端prd文档/后台管理系统原型/运输公司管理/产品库管理/资金管理/移 ...
- uniapp简单搞定支付传统的开发支付需要前后端做很多工作,各种参数的处理,签名,秘钥的验证校验等,尤其是涉及到多种不同的平台支付,更是繁琐;而且以往的支付是由后端主导的,如果后端是个菜鸡,那么做这
uniapp简单搞定支付 传统的开发支付需要前后端做很多工作,各种参数的处理,签名,秘钥的验证校验等,尤其是涉及到多种不同的平台支付,更是繁琐:而且以往的支付是由后端主导的,如果后端是个菜鸡,那么做这 ...
最新文章
- [算法也疯狂]实现假装商品抢购繁忙的效果(php版)
- 计算程序运行时间(.net1.1 于.net2.0的区别)在.net2.0中提供了Stopwatch类,简单例子...
- Python3 中 爬网页 \uxxx 问题
- 我们是如何做好前端工程化和静态资源管理 - 無雄 - 博客园
- python中keys是什么意思_python中key指的是什么
- duilib vs2015 安装_FFmpeg视频播放器开发-FFmpeg简介与项目环境搭建(一)
- html页面加载时执行ajax请求,页面加载完成之后,ajax远程调用的数据才显示出来。有没有可能使ajax部分的程序执行完了,页面再加载完成...
- 基础功能2-python修改文件中所有文件名
- 测试计划与测试方案的区别
- pycharm导入opencv库失败解决方法
- Java中的自定义注解
- 阿里云高级技术专家王晨:云原生数据库PolarDB技术解密
- 2018.12.25|区块链技术头条
- 2021国内地址数据库表mysql
- 查看签名apk调试日志工具
- 人类与计算机作文1500,人类群星闪耀时作文1500字
- monkey测试中防止关闭WIFI的方法
- pip install -t的意思
- Oceanbase 扩容TPC-H测试
- 二代身份证号码最后一位校验位的计算方法