axios发送的参数后端接收不到

1 后端接收不到的原因

axios发送参数后端接收不到的原因是发送请求的数据格式不对(排除错误的情况),前端发送数据时Content-Type有两种方式,一种是'Content-Type':'application/json;charset=utf-8',另一种是'Content-Type': 'application/x-www-form-urlencoded'。axios的post/get方法默认使用的是'Content-Type':'application/json;charset=utf-8',即json方式,后端只能使用json方式(Flask:get_json()、SpringMVC:@RequestBody )接收,如果以其他方式接收是无法接收的。

 

2 解决方法

2.1 前端修改

前端向后端看齐,如果后端是form方式接收,前端可以使用如下2种方式:
(1)使用qs序列化参数
let param = qs.stringify({ id:1 }); 
axios.post('/api', param).then(res=>{ 
    console.log(res.data) 
}); 
(2)使用URLSearchParams
注意:URLSearchParams和FormData()是不同的,使用FormData()还需要添加{headers:{'Content-Type': 'multipart/form-data'}}
let param = new URLSearchParams(); 
param.append("id", 1); 
axios.post('/api', param).then(res=>{ 
    console.log(res.data) 
});


2.2 后端修改

与后端开发人员协商,让后端更改为与前端一致的数据方式;

3 后端接收数据的方式


3.1 flask数据接收

Flask接收数据常用的有5种方式,参数(args)、表单(form)、值(values)、文件(files)、json(get_json)、
def args(): 
    # 获得URL中的参数,返回值字典 
    # data = request.args.get('id') 
    data = request.args['id'] 
     
def form(): 
    # 获得form表单中的参数,返回值字典 
    # data = request.form.get('id') 
    data = request.form['id'] 
     
def values(): 
    # 获得URL和from中的所有参数,返回值字典 
    # data = request.form.get('id') 
    data = request.form['id'] 
     
def file(): 
    # 获取file文件数据,返回值字典 
    # data = request.files.get('file') 
    data = request.files['file'] 
     
def json(): 
    # 获取json数据,返回值字典 
    data = request.get_json()

 

3.2 SpringMVC数据接收

SpringMVC中接收参数的方式,有不使用注解的方式,控制器的参数名和HTTP请求参数名称一致;使用注解方式的有3种方式,表单(@RequestParam)、URL(@PathVariable)、json(@RequestBody)
public void requestParam(@RequestParam("id") int id){ 
    System.out.println(id); 

 
public void pathVariable(@PathVariable("id") int id){ 
    System.out.println(id); 

 
public void json(@RequestBody Object id){ 
    System.out.println(id); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值