react + flask web应用开发-前后端交互

react发送请求到后台flask

书接上回react + flask web应用开发-react前端

axios

安装axios

在react项目中执行
npm i axios

axios常用发送请求的方式
axios({
    method:"POST",  // 若不设置,默认为GET请求
    url:'/user/12345',
    //当`url`是相对地址的时候,设置`baseURL`自动添加在url之前会非常方便
    baseURL:'https://some-domain.com/api/',
    //`headers`选项是需要被发送的自定义请求头信息
    headers: {'X-Requested-With':'XMLHttpRequest'},
    //`params`选项是要随请求一起发送的请求参数----一般链接在URL后面
    //他的类型必须是一个纯对象或者是URLSearchParams对象
    params: {
      ID:12345
    },
    //`data`选项是作为一个请求体而需要被发送的数据
    //该选项只适用于方法:`put/post/patch`
    data:{
        firstName:"Fred",
        lastName:"Flintstone"
    },
    //`timeout`选项定义了请求发出的延迟毫秒数
    //如果请求花费的时间超过延迟的时间,那么请求会被终止
    timeout:1000,
    //`withCredentails`选项表明了是否是跨域请求,默认是false
    withCredentials:false,//default,
    //返回数据的格式
    //其可选项是arraybuffer,blob,document,json,text,stream
    responseType:'json',//default
});

常用简写:

axios.request(config);

axios.get(url[,config]);

axios.delete(url[,config]);

axios.head(url[,config]);

axios.post(url[,data[,config]]);

axios.put(url[,data[,config]])

axios.patch(url[,data[,config]])
POST请求示例
axios.post('/str_test',data).then(response => {
  console.log(response.data);
}).catch(err => {
  console.log(err);
});

使用axios发送请求

代码修改

react部分:
新增文件ButtonEvent.js 用来进行axios示例
文件内容如下

import React from 'react';
import axios from 'axios';

class ButtonEvent extends React.Component {
    constructor(props) {
      super(props);
      this.state = {
        isToggleOn: true,
        str: 'str test'
      };
  
      this.handleClick = this.Click.bind(this);
    }
  
    Click(){
      this.setState({
        isToggleOn: false,
      });
      const data = {string: this.state.str}
      console.log(data);
      axios.post('/str_test', data).then(response => {
        console.log(response.data);
        this.setState({
            str: response.data['string']
        });
      }).catch(err => {
        console.log(err);
      });
      this.setState({
        isToggleOn: true,
      });
    }
  
    render() {
      return(
        <div>
          <h1>
          <button disabled={!this.state.isToggleOn} onClick={this.handleClick.bind(this, this.state.str)}>
            get_info
          </button>
          </h1>
          <h1>{this.state.str}</h1>
        </div>
      )
    }
}

export default ButtonEvent;

在App.js中添加ButtonEvent组件

...
<ButtonEvent />
...

flask部分:
修改index.py文件,增加接口函数

...
from flask import Flask, render_template, request, jsonify
...
@app.route('/str_test', methods=['POST'])
def str_test():
    str = request.json.get('string').strip()
    str = str + ' test'
    return jsonify({"string": str})
...
编译运行

react 部分文件修改完成后,执行npm run build 进行编译,然后将buikd目录下的代码同步到后端项目中。
具体可以参照之前的文章 react + flask web应用开发-前后端结合 进行代码更新。

运行效果

运行结果

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值