若依前后端分离版本-前后端交互整理

ruoyi-ui与后端交互

方法一:表单

使用 headers: {'Content-Type':'application/x-www-form-urlencoded'},

ruoyi-ui的vue中

//ruoyi-ui的vue中定义
formData: {
                    a: '111',
                    b: '111',
                    c: 1,
                },
//vue中方法调用              
outBound() {            
            empty(this.formData).then(response => {
        })
},

ruoyi-ui的api中

​​​​​​​//ruoyi-ui中js中api
export function empty(data) {
   const encodedData = qs.stringify(data);
  return request({
    url: '/A/info/empty',
    method: 'post',
    data: encodedData,
    headers: {'Content-Type':'application/x-www-form-urlencoded'},
  })
}

controller方法 


//controller中方法
@RequestMapping("/A/info")
~~~
    @PreAuthorize("@ss.hasPermi('A:info:remove')")
  
    @PostMapping("/empty")
    public AjaxResult empty( String a, String b, Integer c) {
        return aInfoService.empty(a, b, c);
    }

方法二:json

axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'

ruoyi-ui的vue中

//ruoyi-ui的vue中定义
formData: {
					a: '111',
					b: '111',
					c: 1,
				},
//vue中方法调用				
outBound() {   			
     		empty(this.formData.a,this.formData.b,this.formData.c).then(response => {
     	})
},

 ruoyi-ui的api中

//ruoyi-ui中js中api
export function empty(a,b,c) {
  return request({
    url: '/A/info/empty/'+a+'/'+b+'/'+c,
    method: 'post',
  })
}

 controller方法 

   //controller中方法
@RequestMapping("/A/info")
  
    @PostMapping("/empty/{a}/{b}/{c}")
    public AjaxResult empty( @PathVariable String a, @PathVariable String b, @PathVariable Integer c) {
        return aInfoService.empty(a, b, c);
    }

ruoyi-app与后端交互

方法一:表单

ruoyi-app的vue中

//ruoyi-app的vue中定义
formData: {
					a: '111',
					b: '111',
					c: 1,
				},
//vue中方法调用				
outBound() {   			
     		empty(this.formData).then(response => {
     	})
},

ruoyi-app的api中 

//ruoyi-app的js中api
export function empty(data) {
        return request({
                url: '/A/info/empty',
                method: 'post',
                data: data,
                header : {"Content-Type":"application/x-www-form-urlencoded"}
  })
}

 controller中

//controller中方法
@RequestMapping("/A/info")
~~~
    @PreAuthorize("@ss.hasPermi('A:info:remove')")
  
    @PostMapping("/empty")
    public AjaxResult empty( String a, String b, Integer c) {
        return aInfoService.empty(a, b, c);
    }

方法二:json-同ui前后端交互

如果想ruoyi-ui的前后端表单交互与ruoyi-app使用前后端表单交互相同,需要对request.js进行修改

修改ruoyi-ui的request.js

方法一:axios请求配置中提供了transformRequest方法用于发送前修改请求数据

请求配置 | Axios中文文档 | Axios中文网 (axios-http.cn)

创建axios实例后,添加
// 新增
// `transformRequest` 允许在向服务器发送前,修改请求数据
// 它只能用于 'PUT', 'POST' 和 'PATCH' 这几个请求方法
// 数组中最后一个函数必须返回一个字符串, 一个Buffer实例,ArrayBuffer,FormData,或 Stream
service.defaults.transformRequest = [function (data, headers){
  if (headers['Content-Type'] === 'application/x-www-form-urlencoded') {
    return typeof data === 'object' ? qs.stringify(data) : data;
  }
    if (headers['Content-Type'].includes("application/json")) {
    return typeof data === 'object' ? JSON.stringify(data) : data;
  }
  return data
}]

方法二:request拦截器中添加,用于修改config.data值

import qs from 'qs'
// 【如果是表单类型,判断一下数据是不是对象,如果是对象,则序列化,如果不是对象则直接返回,如果不是表单则直接返回】
//qs.stringify会将对象序列化为 key1=value1&key2=value2&key3=value3形式
config.data = config.headers['Content-Type'] === "application/x-www-form-urlencoded" ?
  (typeof config.data === 'object' ? qs.stringify(config.data) : config.data) : config.data;

小白一枚,可能有不对的地方~

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以在 Flask 中使用 ajax 和 JSON 来实现前后端分离。 首先,在 Flask 中创建一个视图函数,它会返回一个 JSON 响应,例如: ``` @app.route('/api/data') def get_data(): data = {'key': 'value'} return jsonify(data) ``` 然后,在前端 JavaScript 代码中使用 ajax 请求这个视图,例如: ``` $.get('/api/data', function(data) { console.log(data.key); // 'value' }); ``` 这样,前端 JavaScript 代码就可以通过 ajax 请求与 Flask 后端进行通信,从而实现前后端分离。 ### 回答2: Python Flask可以通过提供API接口来实现前后端分离。 首先,我们需要在Flask中定义一系列的路由来处理前端发送的请求。这些路由可以返回JSON格式的数据,而不是完整的HTML页面。这样前端可以通过发送HTTP请求到这些路由来获取数据。 其次,我们可以使用Flask的模板引擎来渲染前端的页面。在HTML页面中,我们可以使用模板语法来插入后端返回的数据或者根据后端的状态来动态生成页面。 另外,为了方便前后端交互,我们可以使用AJAX来异步地发送请求并获取数据。前端通过JavaScript调用Flask提供的API接口,并将返回的数据渲染到页面中。这样可以达到前后端分离的效果,前端负责展示数据,后端负责处理数据。 在前后端分离的架构中,前端和后端是独立的,它们可以分别部署在不同的服务器上。前端可以使用各种框架,如React、Angular或Vue等,进行开发。后端则使用Python Flask提供API接口,处理数据的增删改查等操作。 总结一下,要实现Python Flask的前后端分离,我们需要在Flask中定义API接口来处理前端发送的请求,并返回JSON格式的数据;使用模板引擎渲染前端页面;使用AJAX进行前后端的数据交互。这样可以使前端和后端实现解耦,更好地实现前后端的分离。 ### 回答3: Python Flask可以通过一些方法实现前后端分离,以下是一种常见的实现方法。 首先,前后端分离的核心思想是将前端与后端的逻辑进行分离,前端负责页面的展示和交互,后端负责数据的处理和存取。 在Flask中,可以使用Flask的线程安全的渲染器(Thread Safe Renderer)将后端逻辑与前端模板分离。具体步骤如下: 1. 安装Flask和前端框架,如React、Vue等,以及相关的插件。 2. 创建Flask应用程序,并定义路由和视图函数。视图函数负责处理请求,获取数据并返回给前端。 3. 将前端的HTML、CSS和JavaScript文件整理并放入静态文件夹中,如/static。 4. 在Flask的路由函数中,使用`render_template`函数渲染前端的HTML模板。 5. 在前端的代码中,使用Ajax或Fetch等技术从Flask后端获取数据。可以通过发送HTTP请求到后端的路由函数,获取数据并在前端进行处理和展示。 通过以上步骤,Flask后端和前端就完成了分离。后端负责处理业务逻辑和数据存取,而前端负责展示和交互。 需要注意的是,前后端分离的实现方法有很多种,上述只是其中一种简单的示例。具体实现方式可以根据项目的需要和个人的偏好进行调整和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值